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

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


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

数値チェック

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

英字チェック

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

英数字チェック

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 数字チェック
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’の文字に一致します。


\ (円マーク)

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


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