2
 $pattern="/[a-z]*[a-z]*/i";
if(!preg_match($pattern, $value)){
         $this->error_name="The name should contain at least two letters."; 
       }

ユーザーが自分の名前を少なくとも2文字で入力しているかどうかを確認しようとしています。したがって、基本的に、彼は自分の名前をそのような111111111111として入力することはできません。2文字でなければなりません。

私が書いた正規表現が機能しないのはなぜですか?

4

5 に答える 5

3

次を使用できます。

$pattern="/^[a-z]{2,}$/i";

これにより、名前に文字のみが含まれ、名前に少なくとも2文字が含まれるようになります。

編集:

名前に少なくとも2文字を含める必要があり、他の非文字も含めることができるようです。

$pattern="/^.*[a-z].*[a-z].*$/i";
于 2012-06-01T13:19:52.380 に答える
1

これを試してください(コードを変更してください):

$pattern="/^[a-z]{2}.*/i";
if(!preg_match($pattern, $value)){
         $this->error_name="The name should contain at least two letters."; 
       }
于 2012-06-01T13:18:17.577 に答える
1

文字列で少なくとも2つのアルファベットが使用されている場合、trueを返します。

preg_match_all('/[a-z]/', $str, $m) >= 2;
于 2012-06-01T13:39:05.953 に答える
0
$pattern="/[a-z].*[a-z]/i";
if(!preg_match($pattern, $value)){
   $this->error_name="The name should contain at least two letters."; 
}

*ゼロ回以上を意味するため、コードが機能しなかったため、1文字または1文字にも一致しませんでした。

于 2012-06-01T13:20:24.407 に答える
0
$pattern="/^([a-z]{2})|([a-z].*[0-9].*[a-z].*).*/i";

答えは上記のものでなければならないと思います。あなたの答えは私に手がかりを与えました。

これで、これらの名前とも一致します。

a1111111111111a

于 2012-06-01T13:28:10.793 に答える