プログラミングと日々思ったことなど

ブログ名通りです。仕事でプログラミングをはじめました。

正規表現について【メモ】

金曜日にこんな入力制限処理を作成しました。

//キー入力チェック(電話番号)
//テキストボックスの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);
	}
}

Regex.IsMatchメソッドは、正規表現と一致する対象が指定した入力文字列内で見つかったかどうかを示します。