Javascript 为密码验证实现正则表达式时遇到问题

Javascript 为密码验证实现正则表达式时遇到问题,javascript,regex,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])(?=.*?[#?!@$%^&*-])(?=.*?[#?!@$%^&*-])

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

还测试了

张贴您的尝试。您是否尝试过先搜索答案?这在JavaScriptlol中是很常见的事情,我至少累了两次,但不能..我至少可以1@SallyAbdo看看这个,希望它有帮助:)你还需要一组括号才能让
^
$
正常工作。(如前所述,有两个gloabl备选方案-一个以
^
开头,另一个以
$
结尾-两个锚都需要应用于两个备选方案。)
try this
if(userpassword.match(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&\/=?_.,:;\\-])|(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%&\/=?_.,:;\\-]).{9,}$/)) {
    alert("right");
} else {
    alert("false");
}