Javascript 用于密码验证的正则表达式,至少有4个不同字符组中的3个

Javascript 用于密码验证的正则表达式,至少有4个不同字符组中的3个,javascript,regex,Javascript,Regex,正在尝试编写一个密码验证程序,该验证程序可以包含4个字符组中至少3个不同的字符组 条件: 密码至少包含8个字符 密码应具有以下4个字符组中的3个不同字符组 字符组和每个字符组的密码应至少包含2个字符 大写字母 小写字母 数字的 特殊字符(!@$%&) 我已经用javascript编写了正则表达式: ((?=.*[a-z]{2,})(?=.*[A-Z]{2,})(?=.*[0-9]{2,})|(?=.*[a-z]{2,})(?=.*[A-Z]{2,})(?=.*[!@#$%&\/=?_.,

正在尝试编写一个密码验证程序,该验证程序可以包含4个字符组中至少3个不同的字符组

条件:

  • 密码至少包含8个字符
  • 密码应具有以下4个字符组中的3个不同字符组 字符组和每个字符组的密码应至少包含2个字符

    大写字母

    小写字母

    数字的

    特殊字符(!@$%&)

  • 我已经用javascript编写了正则表达式:

    ((?=.*[a-z]{2,})(?=.*[A-Z]{2,})(?=.*[0-9]{2,})|(?=.*[a-z]{2,})(?=.*[A-Z]{2,})(?=.*[!@#$%&\/=?_.,:;\\-]{2,})|(?=.*[a-z]{2,})(?=.*[0-9]{2,})(?=.*[!@#$%&\/=?_.,:;\\-]{2,})|(?=.*[A-Z]{2,})(?=.*[0-9]{2,})(?=.*[!@#$%&\/=?_.,:;\\-]{2,})).{8,}
    
    但这并没有通过某些条件

    一些有效密码:

    A2W4HH#

    $#aaY5U5

    YT7gh8q2

    任何帮助都将不胜感激
    谢谢:)

    如果您需要至少匹配四个字符集中的三个字符集,那么编写验证密码的Javascript函数将比使用纯正则表达式解决方案更容易。纯正则表达式解决方案很容易,因为它应该是所有四个字符集,而不是四个字符中的三个

    检查此功能,它应该按照您需要的方式工作

    函数isPasswordValid(通过){
    如果(通过长度<8){
    返回false;
    }
    var reg=[/[a-z]/,/[a-z]/,/[0-9]/,/[(!@$%&]]
    var计数=0;
    对于(变量i=0;i=3){
    返回true;
    }
    }
    返回false;
    }
    变量pwds=['aB1@','aB1@aaaa“,”AAAAA“,”AAAY5U5“,”YT7gh8q2“;
    适用于(PWD的){
    console.log(s+'-->'+isPasswordValid(s));
    
    }
    Regex不适合一次完成所有操作。为什么不使用单独的正则表达式,一个用于检查密码的每个要求?可能也会使您的代码更易于阅读。在这里使用Regex似乎是一些代码聪明的机会,但对于这项工作来说,它绝对是错误的工具。