为了账号安全,请及时绑定邮箱和手机立即绑定

用于连续重复字母、数字和特殊字符的 Java 正则表达式

用于连续重复字母、数字和特殊字符的 Java 正则表达式

繁星淼淼 2021-10-13 16:19:48
我必须应用密码策略,并且我正在使用这个正则表达式(默认为我的身份服务器),它接受密码作为小写、大写、数字和特殊字符的组合:^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&*])).{0,100}$我需要修改它,使其不应该匹配具有超过 3 个相同字符的连续副本的字符串,例如Adminnnn@123.
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

这很棘手,但我认为这应该可行(在这里现场尝试):


^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&*])(?!.*(.)\1\1\1)[0-9a-zA-Z!@#$%&*]{0,100}$

我使用了 4 个前瞻断言和一个否定前瞻断言。


(?=.*[0-9])         must contain a number 

(?=.*[a-z])         must contain a lower case

(?=.*[A-Z])         must contain an upper case

(?=.*[!@#$%&*])     must contain a special character

(?!.*(.)\1\1\1)     must not repeat the character in group 1 more than 3 times

[0-9a-zA-Z!@#$%&*]  is composed of these characters

{0,100}             0 to 100 symbols allowed


查看完整回答
反对 回复 2021-10-13
  • 1 回答
  • 0 关注
  • 451 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信