

PHPの6文字以上の半角英数字の正規表現作成中に  
if(preg_match('/^[a-zA-Z0-9]+$/',($_POST['password'])) !== 6  
と  
if(preg_match('/^[a-zA-Z0-9]+$/',($_POST['password'])) >= 6

この2パターンで試したのですが、上手く動作しませんでした。  
お手数をおかけしますがご教授お願い致します。


CC BY-SA 4.0
2021-11-30T06:11:07.773
83892
2021-12-15T16:32:20.300
48303
question
php
PHPの6文字以上の半角英数字の正規表現について


`preg_match` の返り値は、マッチした (=1) かマッチしないか (=0) であり、文字数ではありません。

正規表現で文字数を指定したい場合、`{N}` や `{n,m}` のような書式を使います。  
元のコードに当てはめるなら

[code]

    if( preg_match('/^[a-zA-Z0-9]{6}$/',($_POST['password']) ) {
        // a-zA-Z0-9 の6文字ちょうどにマッチ
    }
    
[/code]

もしくは、単純に文字数を確認するなら `strlen`, `mb_strlen` 等を使う方法もあります。


CC BY-SA 4.0
2021-11-30T06:27:20.297
83893
2021-11-30T06:27:20.297
3060
83892
answer


これでどうでしょうか。

[code]

    if (preg_match('/^[a-z0-9]{6,}$/i', $_POST['password'])) {
        echo "英数字6文字以上です。";
    }
    
[/code]

{6,} = 6文字以上。  
スラッシュ直後の「i」 = 大文字小文字を区別しない。


CC BY-SA 4.0
2021-12-15T16:32:20.300
84154
2021-12-15T16:32:20.300
38398
83892
answer