我正在尝试编写正则表达式来验证给定规则的密码。
密码长度必须至少为 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,}$
并且它运行完美,请参阅 rubular但我想优化这些正则表达式,我不确定是否有任何方法可以简化它。 任何建议将不胜感激。 非常感谢
最佳答案
帮自己(以及将来开发该应用程序的任何人)一个忙,将正则表达式分成 4 部分:
{
:lowercase => /regex_for_lowercase/,
:uppercase => /regex_for_uppercase/,
:digits => /regex_for_digits/,
:symbols => /regex_for_symbols/,
}
然后统计密码符合这4条规则中有多少条。如果输入的密码未通过验证,它还可以让您有机会显示更有用的错误消息。
关于javascript - 给定规则组合的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38697815/