我正在尝试使用Javascript验证密码,并给出以下条件:
- 至少9个字符长
- 至少使用以下字符类型中的3/4:
- 2个以上大写字母
- 2个以上小写字母
- 2个以上数字
- 2个以上特殊字符
我正在尝试使用以下模式来实现后一个标准(2+大写、2+小写等):
var pattern2=/^(?=.*?[A-Z])(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[0-9])(?=.*?[#?!@$%^&*-])(?=.*?[#?!@$%^&*-]).{9,}$/gi
然而,它不起作用。我该怎么解决这个问题?
尝试:
(?=(.*d){2})(?=(.*[a-z]){2})(?=(.*[A-Z]){2})(?=.*[#?!@$%^&-]).{9,}
在这里测试。
只有在满足所有4个条件的情况下,上面的正则表达式才会匹配。如果你想要至少3个,那么就有怪物:
((?=(.*d){2})(?=(.*[a-z]){2})(?=(.*[A-Z]){2})|(?=(.*d){2})(?=(.*[a-z]){2})(?=.*[#?!@$%^&-])|(?=(.*d){2})(?=(.*[A-Z]){2})(?=.*[#?!@$%^&-])|(?=(.*[a-z]){2})(?=(.*[A-Z]){2})(?=.*[#?!@$%^&-])).{9,}
也在此处测试
try this
if(userpassword.match(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&/=?_.,:;\-])|(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%&/=?_.,:;\-]).{9,}$/)) {
alert("right");
} else {
alert("false");
}