0

こんにちは、スペシャルを含むほぼすべての文字を受け入れる正規表現があります。最小8文字と最大30文字を受け入れるように設定しました。最小ではすべてが正しいですが、最大では機能しません。

文字列が 30 または任意の長さを超える場合。結果は真です。

パターンは次のとおりです。

 $pattern = '/[A-Za-z0-9' . preg_quote( '.%^&()$#@!/-+/', '/') . ']{8,30}/';

テストコード全体は次のとおりです。

 $pattern = '/^[A-Za-z0-9' . preg_quote( '.%^&()$#@!/-+/', '/') . ']{8,30}$/';

 if(preg_match($pattern, $pass))
   {
     echo '<br>true';
   }
 else
   {
 echo '<br>false';
    }


?>
4

2 に答える 2

3

これは、文字列内の最大 30 文字の任意の文字列と一致します。文字列の最初と最後を含める必要があります。

$pattern = '/^[A-Za-z0-9' . preg_quote( '.%^&()$#@!/-+/', '/') . ']{8,30}$/';
于 2013-03-27T18:36:45.737 に答える
0

The first $pattern expression in your question is missing the required: ^ and $ beginning and end of line assertions - (but the example code snippet which follows uses them correctly.)

You also need to escape the dash/hyphen inside the character class - the hyphen defines a range of characters. (Note that the forward slash / is NOT the escape char!) Try this:

$pattern = '/^[A-Za-z0-9.%^&()$#@!\-+\/]{8,30}$/';
于 2013-03-27T20:02:08.420 に答える