$pattern="/[a-z]*[a-z]*/i";
if(!preg_match($pattern, $value)){
$this->error_name="The name should contain at least two letters.";
}
我正在尝试检查用户是否用至少两个字母输入了他的名字。所以基本上,他不能输入他的名字,如 111111111111.. 它必须有两个字母。
我写的正则表达式不起作用..为什么?
您可以使用:
$pattern="/^[a-z]{2,}$/i";
这将确保名称只有字母,并且名称中至少有 2 个字母。
编辑:
看起来您希望名称至少包含两个字母,并且还可以包含其他非字母:
$pattern="/^.*[a-z].*[a-z].*$/i";
当字符串中至少使用两个字母时返回 true:
preg_match_all('/[a-z]/', $str, $m) >= 2;
试试这个(您的代码已修改):
$pattern="/^[a-z]{2}.*/i";
if(!preg_match($pattern, $value)){
$this->error_name="The name should contain at least two letters.";
}
$pattern="/^([a-z]{2})|([a-z].*[0-9].*[a-z].*).*/i";
我认为答案应该是上面那个..你的答案给了我一个线索..
现在它也将匹配这些名称:
a1111111111111a
$pattern="/[a-z].*[a-z]/i";
if(!preg_match($pattern, $value)){
$this->error_name="The name should contain at least two letters.";
}
您的代码不起作用,因为*
意味着零次或多次,因此它也将不匹配或匹配一个字符。