正则表达式中的密码至少8个字符,大写,小写,数字,特殊字符和非重复字符?

时间:2019-02-21 09:29:32

标签: regex

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

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

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

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

不确定如何将两者结合起来。

请帮助 非常感谢 天竺葵

1 个答案:

答案 0 :(得分:1)

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

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

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