必须至少包含2个字母

时间:2014-08-02 19:10:02

标签: php regex

如何检查字符串是否包含任意位置/顺序中至少2个字母?不区分大小写的

这当然只适用于一个或多个字母

if (!preg_match('/[a-z]+/i', $pass)) {

}

然后我尝试了类似

的东西
if (!preg_match('/[a-z]{2,}/i', $pass)) {

}

但这不起作用

由于

编辑:通过“任何位置/顺序”我的意思是12345ab / a12345b / 12a345b6

2 个答案:

答案 0 :(得分:5)

你只需要这个正则表达式:

[a-z][^a-z]*[a-z]

Demo

所以,你的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,}