首页 > 解决方案 > 密码的正则表达式至少 8 个字符、大写、小写、数字、特殊字符和不重复?

问题描述

嗨,我想找到一个满足这些条件的正则表达式。

(1) 密码必须至少有 8 个字符 (2) 它必须至少包含一个大写、小写字母、数字和特殊字符。(3) 密码不包含超过两个连续相同的字符。

我有前两点的正则表达式 ^(?=. ?[AZ])(?=. ?[az])(?=. ?[0-9])(?=. ?[#?!@$ %^&*-]).{8,}$

我认为这个重复字符串的正则表达式是 (?!(.)\1{2,})

不知道如何将它们结合起来。

请帮忙谢谢你这么多prasanth

标签: regex

解决方案


好吧,这可能不漂亮,但似乎可以完成工作:您可以在此处
^(?!.*(.)\1\1)(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[.\-!?§$%&]).{8,}.*$ 查看工作演示。

我上面链接的网站对正则表达式给出了很好的解释。请尝试至少了解这里发生的情况,以便您可以发现使用如此丑陋的 RegEx 时发生的错误(因此 SO 不会成为编码服务站点,而是学习东西的地方)。

请注意,此示例中的“特殊字符”是.-!?§$%&. 如果您想要其他任何人,请将它们添加到模式中的位置。并且不要忘记-使用\in 字符类进行转义,因为它们在这里具有特殊含义。就像在这部分:.\-!?§$%&


推荐阅读