Javascript 给定规则组合的正则表达式

Javascript 给定规则组合的正则表达式,javascript,ruby-on-rails,ruby,regex,jquery-validate,Javascript,Ruby On Rails,Ruby,Regex,Jquery Validate,我正在尝试编写正则表达式来验证给定规则的密码 密码长度必须至少为8个字符,至少包含以下4种字符类型中的3种: 小写字母(即a-z) 大写字母(即A-Z) 数字(即0-9) 特殊字符(例如!@$&*) 我通过讨论找到了非常好的答案 现在我正试图为上述需求编写正则表达式,我提出了如下解决方案 ^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}| (?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,

我正在尝试编写正则表达式来验证给定规则的密码

密码长度必须至少为8个字符,至少包含以下4种字符类型中的3种:

  • 小写字母(即a-z)
  • 大写字母(即A-Z)
  • 数字(即0-9)
  • 特殊字符(例如!@$&*)
我通过讨论找到了非常好的答案

现在我正试图为上述需求编写正则表达式,我提出了如下解决方案

^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}|
(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}|
(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}|
(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[a-z]).{8,}|
(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9]).{8,}$
它工作得很好,但我想优化这些正则表达式,我不确定是否有任何方法可以简化它。 如有任何建议,将不胜感激。 非常感谢

帮你自己(以及将来使用该应用程序的任何人)一个忙,并将regexp分成4部分:

{
  :lowercase => /regex_for_lowercase/,
  :uppercase => /regex_for_uppercase/,
  :digits => /regex_for_digits/,
  :symbols => /regex_for_symbols/,
}
然后计算密码与这4条规则中的多少条匹配。如果输入的密码无法验证,您还将有机会显示更多有用的错误消息。

帮您自己(以及将来使用该应用程序的任何人)一个忙,并将regexp拆分为4:

{
  :lowercase => /regex_for_lowercase/,
  :uppercase => /regex_for_uppercase/,
  :digits => /regex_for_digits/,
  :symbols => /regex_for_symbols/,
}

然后计算密码与这4条规则中的多少条匹配。如果输入的密码未验证,您还将有机会显示更有用的错误消息。

优化此正则表达式意味着将其拆分为几个较小的正则表达式。它们将更具可读性和可维护性。@WiktorStribiżew如果您能在此处提供任何有用的链接,我将不胜感激,谢谢您如果正则表达式工作正常,也许问这个问题的更好地方是。优化此正则表达式意味着将其拆分为几个较小的正则表达式。它们将更具可读性和可维护性。@WiktorStribiżew如果您能在这里提供任何有用的链接,我将不胜感激,谢谢您如果正则表达式工作正常,也许,问这个问题的更好地方是。