无法实现密码验证的正则表达式

时间:2015-03-20 15:32:32

标签: javascript regex

我正在尝试使用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

然而,它不起作用。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试:

(?=(.*\d){2})(?=(.*[a-z]){2})(?=(.*[A-Z]){2})(?=.*[#?!@$%^&-]).{9,}

经过测试here

上面的正则表达式只有在尊重所有4个requeriments时才匹配。如果你想要至少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,}

还测试了here

答案 1 :(得分:0)

try this
if(userpassword.match(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&\/=?_.,:;\\-])|(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%&\/=?_.,:;\\-]).{9,}$/)) {
    alert("right");
} else {
    alert("false");
}