我需要一个正则表达式来检查密码:
应该与之相匹配的例子:
不应与之相匹配的例子:
这就是我迄今为止尝试过的:
^(?!.*pass|.*Pass|.*qwer|.*Qwer)(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9#?!@$%^&*-]).{8,}$我不知道如何匹配这些重复的字符。有什么想法吗?
发布于 2020-03-10 21:48:50
如果有3个或3个以上连续相同的字符,则如果要失败匹配,请使用(?!.*(.)\1{2})查找:
^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^0-9#?!@$%^&*-]*[0-9#?!@$%^&*-])(?!.*[pP]ass|.*[qQ]wer)(?!.*(.)\1{2}).{8,}$见regex演示。
如果有3个或更多个不一定是连续相同的字符,则如果要失败匹配,请使用(?!.*(.).*\1.*\1)查找:
^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^0-9#?!@$%^&*-]*[0-9#?!@$%^&*-])(?!.*[pP]ass|.*[qQ]wer)(?!.*(.).*\1.*\1).{8,}$请参阅这个regex演示
注意到更改:最有效的外观被移动到开头(在^之后),最小的被移动到右边。
最常见的外观,检查小写字母,大写字母和特殊/数字字符是增强根据对比原理。
模式细节
^ -字符串的开始(?=[^A-Z]*[A-Z]) -必须至少有一个大写的ASCII字母(?=[^a-z]*[a-z]) -必须至少有一个小写的ASCII字母(?=[^0-9#?!@$%^&*-]*[0-9#?!@$%^&*-]) -必须至少有一个来自0-9#?!@$%^&*-集的特殊字符(数字或#、?、!、@、$、%、^、&、*、-)。(?!.*[pP]ass|.*[qQ]wer) -字符串中不允许pass/Pass和qwer/Qwer(?!.*(.).*\1.*\1) -不允许三个不一定连续的重复字符.{8,} -八个或更多字符(行中断字符除外)$ -字符串的末端。发布于 2020-03-11 05:16:31
您可以使用以下正则表达式:
/
(?=.*[0-9#?!@$%^&*-]) # 1+ digit or special char
(?=.*[A-Z]) # 1+ uc letters
(?=.*[a-z]) # 1+ lc letters
(?=[a-zA-Z0-9#?!@$%^&*-]*$) # all chars valid
(?!.*(.)\1{2}) # no 3+ repeats
.{8,} # match string if length >= 8
/x # free-spacing modehttps://stackoverflow.com/questions/60625564
复制相似问题