正则表达式验证
Posted
技术标签:
【中文标题】正则表达式验证【英文标题】:RegExs VALIDATION 【发布时间】:2021-05-07 08:27:06 【问题描述】:我有两个不同的东西密码和密码。我正在寻找以下两者的 RegEx 格式 -:
密码-:
1 大写后者 1 小后者 1 个特殊字符 最少 8 位数字 3次不能重复任何事情。
我已经获得 4 分了
let reg = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.8,)"
但我无法达到第五个。
PIN
1. 6 digit pin
2. Only numbers
3. Can't be use simple pin (111111,222222,...00000 and 123456, 234567 ....654321)
【问题讨论】:
你能添加几个有效和无效的例子吗? 当然@anubhava,密码 -: Anil@123, Patil@123 ... 有效 Anilpatilios@123 无效(“i”在字符串中使用了 3 次) Pin -: 可以使用交替的 6 位数字,任何东西。 你为你的别针试过什么?你也能说出到底什么是不允许的吗? 【参考方案1】:您可以将此正则表达式与额外的负前瞻一起使用,以禁止任何字符出现 3 个或更多重复:
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?!.*?(.)(?:.*?\1)2).8,$
RegEx Demo
注意这个额外的负面预测:
(?!.*?(.)(?:.*?\1)2)
如果我们在输入中的任意位置找到 3 个或更多重复字符,则匹配失败。
完整的正则表达式详细信息:
^
:开始
(?=.*[a-z])
: 肯定前瞻断言我们必须有一个小写字母
(?=.*[A-Z])
: 肯定的前瞻断言我们必须有一个大写字母
(?=.*[0-9])
:肯定的前瞻断言我们必须有一个数字
(?=.*[!@#$%^&*])
: 肯定的前瞻断言我们必须有一个特殊字符
(?!.*?(.)(?:.*?\1)2)
:否定前瞻断言我们不能重复 3 次或更多相同字符
.8,
:匹配 8 个或更多字符
$
;结束
【讨论】:
以上是关于正则表达式验证的主要内容,如果未能解决你的问题,请参考以下文章