复杂密码的正则表达式

mmj*_*ers 3 java regex

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

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

我无法弄清楚如何使用正则表达式验证这一点.有谁能够帮我?

vks*_*vks 5

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

试试这个.看看演示.

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

正如您可以逐步看到的所有条件都在前瞻的帮助下得到满足.

(?=.*[A-Z])===至少有一个资本

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

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

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