$pattern="/[a-z]*[a-z]*/i";
if(!preg_match($pattern, $value)){
$this->error_name="The name should contain at least two letters.";
}
我正在尝试检查用户是否至少用两个字母输入了他的名字。所以基本上,他不能输入他的名字111111111111 ..它必须有两个字母。
我写的正则表达式不起作用..为什么?
答案 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