首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强密码检查

强密码检查
EN

Stack Overflow用户
提问于 2020-03-10 20:37:29
回答 2查看 191关注 0票数 1

我需要一个正则表达式来检查密码:

  • 至少是8字符
  • 至少包含1大写字母
  • 至少包含1小写字母
  • 至少包含1数字或至少1特殊字符
  • 在行中重复字符2次以上吗

应该与之相匹配的例子:

  • Test1234!
  • Te123stE

不应与之相匹配的例子:

  • Teeest123!
  • !TESTT1234

这就是我迄今为止尝试过的:

代码语言:javascript
复制
^(?!.*pass|.*Pass|.*qwer|.*Qwer)(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9#?!@$%^&*-]).{8,}$

我不知道如何匹配这些重复的字符。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-10 21:48:50

如果有3个或3个以上连续相同的字符,则如果要失败匹配,请使用(?!.*(.)\1{2})查找:

代码语言:javascript
复制
^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^0-9#?!@$%^&*-]*[0-9#?!@$%^&*-])(?!.*[pP]ass|.*[qQ]wer)(?!.*(.)\1{2}).{8,}$

regex演示

如果有3个或更多个不一定是连续相同的字符,则如果要失败匹配,请使用(?!.*(.).*\1.*\1)查找:

代码语言:javascript
复制
^(?=[^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/Passqwer/Qwer
  • (?!.*(.).*\1.*\1) -不允许三个不一定连续的重复字符
  • .{8,} -八个或更多字符(行中断字符除外)
  • $ -字符串的末端。
票数 3
EN

Stack Overflow用户

发布于 2020-03-11 05:16:31

您可以使用以下正则表达式:

代码语言:javascript
复制
/
(?=.*[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 mode

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60625564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档