如何检查字符串是否包含任意位置/顺序中至少2个字母?不区分大小写的
这当然只适用于一个或多个字母
if (!preg_match('/[a-z]+/i', $pass)) {
}
然后我尝试了类似
的东西if (!preg_match('/[a-z]{2,}/i', $pass)) {
}
但这不起作用
由于
编辑:通过“任何位置/顺序”我的意思是12345ab / a12345b / 12a345b6
答案 0 :(得分:5)
你只需要这个正则表达式:
[a-z][^a-z]*[a-z]
所以,你的PHP变成了:
if(!preg_match("/[a-z][^a-z]*[a-z]/i", $pass)) {
}
Captain Codeman的解决方案(([^a-z]*[a-z]){2,}
)有效,但效率较低,因为当你只想知道$pass
中是否有两个字母时,它需要解析整个字符串。
答案 1 :(得分:4)
这个怎么样:
[^a-z]*[a-z][^a-z]*[a-z]
或者,您可以将其压缩为:
([^a-z]*[a-z]){2,}