为密码验证实现正则表达式时出现问题

Trouble implementing regular expression for password validation

本文关键字:问题 正则表达式 密码 验证 实现      更新时间:2023-09-26

我正在尝试使用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");
}