我试图编写正则表达式来验证给定规则的密码。
密码长度必须至少为8个字符,至少包含以下4种字符中的3种:
现在我正在尝试为上述要求编写正则表达式,我想出了像这样的解决方案
^(?=.*[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,但我想优化这些正则表达式,我不确定是否有任何方法可以简化此操作。 任何建议将不胜感激。 非常感谢
答案 0 :(得分:3)
自己(以及将来会在该应用上工作的任何人)帮忙,并将正则表达式分成4:
{
:lowercase => /regex_for_lowercase/,
:uppercase => /regex_for_uppercase/,
:digits => /regex_for_digits/,
:symbols => /regex_for_symbols/,
}
然后计算密码匹配的这4个规则中有多少个。如果输入的密码未验证,它还将使您有机会显示更多有用的错误消息。