【发布时间】:2020-03-10 20:37:29
【问题描述】:
我需要一个正则表达式来检查密码:
- 至少有 8 个字符
- 至少包含 1 个大写字母
- 至少包含 1 个小写 字母
- 至少包含 1 个数字 或至少 1 个特殊字符
- 不要重复一个字符连续重复超过 2 次strong>
应匹配的示例:
- 测试1234!
- Te123stE
不应匹配的示例:
- Teeest123!
- !TESTT1234
这是我迄今为止尝试过的:
^(?!.*pass|.*Pass|.*qwer|.*Qwer)(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9#?!@$%^&*-]).{8,}$
我不知道如何匹配重复的字符。有什么想法吗?
【问题讨论】:
-
“包含 1...”我认为您的意思是“包含至少 1...”:)
-
我也看不到“Teeest123!”失败。它有 10 个字符,1 个大写,5 个小写,3 个数字,1 个特殊字符,并且不重复超过 3 次。
-
@BrootsWaymb 有 3 个“e”字符,所以如果失败是因为 OP 的意思是“不是 3 次”
-
@Bohemian - 条件是“不要重复超过 3次”
-
@Bohemian 然后 OP 需要明确地说“不是 3 次”。他们做了说的意思完全不同。更不用说检查准确的 3(但或多或少没问题)是非常具体的,我不一定认为假设这就是他们的意思是安全的。更有可能是一个糟糕的测试用例。
标签: regex regex-lookarounds regex-group