我正在尝试编写密码验证程序。
如何查看我提供的字符串中是否至少包含3个不同的字符组?
检查它们是否存在很容易---但至少3个?
大写字母
小写字母
数字
特殊字符!@#$%&/ =?_。,:;-\
(我使用javascript进行正则表达式)
最佳答案
这将使其很难阅读(并因此进行维护!)解决方案,但是这里是:
(?mx)
^
(
(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]) # must contain a-z, A-Z and 0-9
| # OR
(?=.*[a-z])(?=.*[A-Z])(?=.*[!@\#$%&/=?_.,:;\\-]) # must contain a-z, A-Z and special
| # OR
(?=.*[a-z])(?=.*[0-9])(?=.*[!@\#$%&/=?_.,:;\\-]) # must contain a-z, 0-9 and special
| # OR
(?=.*[A-Z])(?=.*[0-9])(?=.*[!@\#$%&/=?_.,:;\\-]) # must contain A-Z, 0-9 and special
)
.{8,} # at least 8 chars
$
一个(可怕的)JavaScript演示:
var pw = "aa$aa1aa";
if(pw.match(/^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&\/=?_.,:;\\-])|(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%&\/=?_.,:;\\-])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%&\/=?_.,:;\\-])).{8,}$/)) {
print('Okay!');
} else {
print('Fail...');
}
打印:
Okay!
,如您在Ideone上看到的。