金曜日にこんな入力制限処理を作成しました。
//キー入力チェック(電話番号) //テキストボックスのKeyPressイベントに処理を作成 private void textBox_KeyPress(object sender, KeyPressEventArgs e) { try { //バックスペース、ハイフンは使用可能にする if(e.KeyChar == 0x08 || e.KeyChar == '-') { return; } //数字キー以外の入力をキャンセルする if(e.KeyChar < 0x30 || e.KeyChar > 0x39) { e.Handled = true; } } catch (Exception ex) { Console.Error.WriteLine(ex); } }
上記に使用しているのは、正規表現です。
正規表現とは
文字列パターンマッチのための簡易言語。
正規表現は色々なプログラミング言語に共通で使える。
(C# .NET Perl Java)
上記の正規表現では、ASCIIの文字列を使用しています。
!ASCII コード
コンピュータは二進数で様々な処理を行うので、文字データも二進数で表される。
文字を表現する二進数のことを文字コードと呼ぶ。
//キー入力チェック(全角のみ) // ^ $ [ ] - について //これらの特殊文字を、正規表現ではメタ文字という(メタ文字は他にもある ? * とか) // ^ と $ は行の先頭や最後のミニ存在する文字列を検索する // が、[]の中で ^ を使用すると、以外の文字(否定)を表す //[] は指定した文字のどれか、-はaからzまで、の”から”という意味 //¥ は後に続くものが何なのかをわかりやすくするために書いてある private void textBox_KeyPress(object sender, KeyPressEventArgs e) { try { if (Regex.IsMatch(e.KeyChar.ToString(),@"[^a-zA-z0-9¥uFF61-¥FF9F!-/:-@¥[-`{-˜]+$]")) { return; } } catch (Exception ex) { Console.Error.WriteLine(ex); } }