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

我正在尝试检查用户是否用至少两个字母输入了他的名字。所以基本上,他不能输入他的名字,如 111111111111.. 它必须有两个字母。

我写的正则表达式不起作用..为什么?

4

5 回答 5

3

您可以使用:

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

这将确保名称只有字母,并且名称中至少有 2 个字母。

编辑:

看起来您希望名称至少包含两个字母,并且还可以包含其他非字母:

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

当字符串中至少使用两个字母时返回 true:

preg_match_all('/[a-z]/', $str, $m) >= 2;
于 2012-06-01T13:39:05.953 回答
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 回答
0
$pattern="/^([a-z]{2})|([a-z].*[0-9].*[a-z].*).*/i";

我认为答案应该是上面那个..你的答案给了我一个线索..

现在它也将匹配这些名称:

a1111111111111a

于 2012-06-01T13:28:10.793 回答
0
$pattern="/[a-z].*[a-z]/i";
if(!preg_match($pattern, $value)){
   $this->error_name="The name should contain at least two letters."; 
}

您的代码不起作用,因为*意味着零次或多次,因此它也将不匹配或匹配一个字符。

于 2012-06-01T13:20:24.407 回答