Javascript 给定规则组合的正则表达式
我正在尝试编写正则表达式来验证给定规则的密码 密码长度必须至少为8个字符,至少包含以下4种字符类型中的3种: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,
- 小写字母(即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如果您能在这里提供任何有用的链接,我将不胜感激,谢谢您如果正则表达式工作正常,也许,问这个问题的更好地方是。