php:phpで正規表現を使った英数字チェック

phpでフォームを作成する場合、バリデーションの処理は必要だと思います。
数字チェック、英字チェック、英数字チェックなど色々なパターンのチェックがあります。
いつも忘れてしまうので、php正規表現で「preg_match()」を使用した英数字チェックをする方法をメモします。


※変数内の全ての文字を判定しています。
※半角英数字の場合です。

数値チェック

	// 数字チェック
	if (preg_match('/^[0-9]+$/', $data)) {
		// 数字の場合
	}
	else {
		// 数字ではない場合
	}

英字チェック

	// 英字チェック
	if (preg_match('/^[a-zA-Z]+$/', $data)) {
		// 英字の場合
	}
	else {
		// 英字ではない場合
	}

英数字チェック

	// 英数字チェック
	if (preg_match('/^[a-zA-Z0-9]+$/', $data)) {
		// 英数字の場合
	}
	else {
		// 英数字ではない場合
	}

また、関数にしておくと値を渡すだけなので簡単に使えると思います。

上記のチェックを関数にした場合

	// 数字チェック
	function is_num($data) {
		if (preg_match('/^[0-9]+$/', $data)) {
			// 数字の場合
			return true;
		}
		else {
			// 数字ではない場合
			return false;
		}
	}

	// 英字チェック
	function is_alpha($data) {
		if (preg_match('/^[a-zA-Z]+$/', $data)) {
			// 英字の場合
			return true;
		}
		else {
			// 英字ではない場合
			return false;
		}
	}

	// 英数字チェック
	function is_alphanum($data) {
		if (preg_match('/^[a-zA-Z0-9]+$/', $data)) {
			// 英数字の場合
			return true;
		}
		else {
			// 英数字ではない場合
			return false;
		}
	}

他にも色々なパターンを組み合わせることができるので、自由にチェック内容を作成できると思います。

正規表現:特殊文字(メタ文字)のまとめ

php正規表現を使用し、文字列やデータを判定・検証することはよくあります。
正規表現で使用する特殊文字メタ文字)について下記にまとめました。


特殊文字(メタ文字)

[ ] (角括弧、角括弧閉じ)

角括弧に囲まれたものを「文字クラス」と言います。角括弧内のいずれかの一文字に一致します。
[abcde]と指定した場合、’a’、’b’、’c’、’d’、’e’のいずれかに一致します。
[a][1]で指定した場合は’a1’の文字に一致します。


- (ハイフン)

文字の範囲を指定する時に使用します。[a-z]と指定した場合、’a’から’z’の文字に一致します。
[a-z]、[A-Z]、[0-9]などハイフンを使用し範囲指定することが可能です。


^ (キャロット)

行頭を示します。
^abcのように正規表現の先頭に記載した場合は、abcで始まる文字に一致します。
^[abc]のように指定した場合は、’a’、’b’、’c’のいずれかで始まる文字に一致します。
[^abc]のように文字クラスの先頭に指定した場合は、’a’、’b’、’c’以外の文字と一致します。


+ (プラス)

直前の文字の1回以上の繰り返しに一致します。
abc+と指定した場合、’abc’、’abcc’、’abccc’などと一致します。


* (アスタリスク)

直前の文字の0回以上の繰り返しに一致します。
abc*と指定した場合、’ab’、’abc’、’abcc’、’abccc’などと一致します。
‘ab’のように’c’という直前の文字がなくても一致します。


$ (ダラー)

末尾を示します。
a$のように指定した場合、文字列の末尾にある’a’に一致します。
[a-z]$のように指定した場合は、文字列の末尾にある’a’から’z’の文字に一致します。


\ (円マーク)

エスケープ文字です。特殊文字(メタ文字)としてではなく通常文字として解釈されます。
「\+」のように使用した場合、プラスの文字に一致します。


他にも色々ありますが、随時追加していきます。