我希望用RegEx实现密码策略。
该政策包含以下规则:
我发现这个模式匹配1):
^(.)((?!\1).)((?!\1)(?!\2).)((?!\1)(?!\2)(?!\3))
此模式与2)和3)匹配:
^(?=.*[a-zA-Z].*)(?=.*[0-9].*)(?=.*[$&+,:;=?@#|'<>.^*()%!-].*)(.{8,})
现在我将这两种模式合二为一。有人可以帮忙吗? ; - )
答案 0 :(得分:1)
或者,不要将它们组合成一个。只需一次检查3个正则表达式中的每一个。如果您需要添加新规则或更改现有规则(特别是因为您已经在组合它们时遇到问题),将它们组合起来会很可怕并且难以理解。
答案 1 :(得分:0)
您可以使用此正则表达式:
^(?=(.)(?!\1)(.)(?!\1)(?!\2))(?=.*[a-zA-Z])(?=\D*\d)(?=.*?[$&+,:;=?@#|'<>.^*()%!-])(.{8,})$
(?=(.)(?!\1)(.)(?!\1)(?!\2)) # Makes sure first 3 characters are unique using lookaheads