正则表达式验证

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 个或更多字符 $;结束

【讨论】:

以上是关于正则表达式验证的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 验证昵称

js验证密码的正则表达式

js电话号码验证的正则表达式?

正则表达式手机号验证问题 急~~~

正则表达式对手机号的验证^[1][3-8]+\\d9

如何使用正则表达式验证非空?