用PHP正则表达式

时间:2012-06-01 13:16:52

标签: php regex

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

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

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

5 个答案:

答案 0 :(得分:3)

您可以使用:

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

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

编辑:

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

$pattern="/^.*[a-z].*[a-z].*$/i";

答案 1 :(得分:1)

试试这个(您的代码已修改):

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

答案 2 :(得分:1)

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

preg_match_all('/[a-z]/', $str, $m) >= 2;

答案 3 :(得分:0)

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

您的代码不起作用,因为*表示零次或多次,因此它也会匹配任何一个或一个字符。

答案 4 :(得分:0)

$pattern="/^([a-z]{2})|([a-z].*[0-9].*[a-z].*).*/i";

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

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

a1111111111111a