您好,我需要检查密码。密码中最多不能包含2个重复字符。
我的密码必须包含至少大写,小写,数字和特殊字符#?!@ $%^&*-
所以,如果我有例如这样的密码
Password123 $有效 密码123 $无效 Passssword123 $无效 PPaassword123 $$有效 PPaassword123 $$$无效
请帮助我 谢谢
答案 0 :(得分:0)
我不确定如何使用相同的模式进行受限字符和重复字符验证,但是这两种模式将满足每种需求。要使用它们,请将您的密码字符串与模式进行比较,如果找到匹配项,密码将失败。
[^\w#?!@$%^&*-]
(.)\1{2,}
答案 1 :(得分:0)
要检查每种字符中的至少一种:
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[#?!@$%^&*-])([a-zA-Z0-9#?!@$%^&*-]+)$
要检查字符是否重复两次以上:
(?!(.)\1{2,})
所以将它们放在一起应该可以给您:
^(?!(.)\1{2,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[#?!@$%^&*-])([a-zA-Z0-9#?!@$%^&*-]+)$
答案 2 :(得分:0)
https://regex101.com/r/CtBM4B/2/
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[#?!@$%^&*-])((.)(?!\2\2))+$
^
... $
-必须与整个字符串匹配(?=.*
X )
-必须包含 X
(?=.*[A-Z])
-A..Z (?=.*[a-z])
-a..z (?=.*[0-9])
-0..9 (?=.*[#?!@$%^&*-])
-#?!@ $%^&*-(
Y )+
- Y 的一个或多个重复(捕获组1:\1
)
(.)
-一切(捕获组2:\2
)(.)(?!\2\2)
-任何没有被自身跟随两次的事物或者通过拉出最终条件来稍微提高效率:
https://regex101.com/r/CtBM4B/3/
^(?!.*(.)\1\1)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[#?!@$%^&*-]).*$
(?!.*(.)\1\1)
-不得包含任何字符的三个重复