我需要验证需要满足以下规则的密码:
- 最小长度为 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/