java - 将密码正则表达式与相同的字符连续组合

标签 java javascript regex

我有一个密码正则表达式,如下

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

我想添加正则表达式来验证这一点,并排除连续插入四个相同字符

我发现这个模式可以匹配 4 个相同的字符,但是我如何组合它们,并且这个模式应该检查是否有 4 个相同的字符,密码应该无效。

(.)\1{3}

最佳答案

这有效:

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

说明:

^                     // beginning of string
(                     // begin capturing group #1 (this is actually unnecessary)
  (?=.*\d)            // must contain a digit
  (?=.*[a-z])         // must contain a lowercase letter
  (?=.*[A-Z])         // must contain an uppercase letter
  (?=.*[!@#$%&*])     // must contain a special character
)                     // end capturing group #1
(                     // begin capturing group #2: one character of password, for repetition quantifier
  (.)                 // capturing group #3: one character of password, for negative lookahead
  (?!\3{3})           // character is not followed by itself 3 times
)                     // end capturing group #2
{0,100}               // repeat group #2 up to 100 times
$                     // end of string

关于java - 将密码正则表达式与相同的字符连续组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29887626/

相关文章:

java - 服务器(Python)-使用套接字的客户端(Java)通信

java - 从java程序运行git命令的问题

c# - 欺骗 JS 对象

用于 12 小时时间验证的 Java 正则表达式,涉及分号

python - 为 Pandas 中的新列赋值

java - 在 EJB 中使用 SSL 出现异常 : Keystore was tampered with, 或密码不正确

java - 在 XML 中进行流过滤的最佳 java 方法?

regex - 如何匹配 perl6 语法中的十六进制数组

javascript - Angular : ng build fails but npm run build works fine

javascript - 计算和删除嵌套数组中的多个元素