java - 复杂密码的正则表达式

标签 java regex

我需要验证需要满足以下规则的密码:

  • 最小长度为 8 个字符
  • 所有字符都必须是唯一的
  • 至少有一个字符是大写的
  • 至少有一个字符是非字母字符、数字或连字符
  • 非字母字符不应作为前两个或最后两个字符放置

我不知道如何使用正则表达式验证它。谁能帮帮我?

最佳答案

^(?=.*[A-Z])(?=.*(?:\d|-))(?!.*(.).*\1)[a-zA-Z]{2}.{4,}[a-zA-Z]{2}$

试试这个。查看演示。

https://regex101.com/r/eZ0yP4/12

如您所见,在前瞻的帮助下逐步满足所有条件。

(?=.*[A-Z])===至少一个大写

(?=.*(?:\d|-))===至少一个数字或-

(?!.*(.).*\1)===没有重复

[a-zA-Z]{2}.{4,}[a-zA-Z]{2}===字母字符作为前两个和后两个。

关于java - 复杂密码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27425709/

相关文章:

java - Hibernate 事务回滚是否有效?

c# - 在c#中有没有类似java的Character.digit(char ch, int radix)的东西?

c# - 正则表达式与 C# 中的交集匹配

Java System.getProperty ("line.separator") 在 apache 服务器中不工作

java - 集群环境下的应用程序可以写缓存吗?

java - Java 中 httpURLconnection 的 ASCII 响应?

javascript - 正则表达式 - 以特定字符串开头但不以另一个子字符串结尾

.net - 替换整行会产生重复出现的替换文本

python - 如何通过python删除大括号包围的 block

java - 字母键盘问题,但使用字符串函数(Java)