【发布时间】:2021-12-30 17:11:56
【问题描述】:
我正在为强密码整理一个正则表达式,但在弄清楚如何将要求结合在一起时遇到了问题。它们是:
- 2 个或多个大写字母
- 2 位或更多位
- 2 个或更多特殊字符
- 正好是 15 个字符
- 连续不超过 4 个不需要重复的小写字母(即 abef)
- 可以以任何字符开头,但两边都需要空格
我从 regex101 的库条目开始查找 2 个或更多字符,但我不知道如何识别不需要是相同小写字符的重复小写字母,数字/大写/特殊要求是不留在字符组内,也不让它以特殊字符开头。
对于重复的小写字母,我认为像这两种方法中的任何一种一样进行否定的前瞻或后视都可以,但事实并非如此:
(?!.*[a-z]{4,})
(?<![a-z])[a-z]{4,}(?![a-z])
我看不到在完整的正则表达式中的哪个位置出现了以特殊开头或检查捕获组之外的问题。
这是我目前所拥有的完整正则表达式,不包括重复的小写要求:
\b(?=(?:.*[A-Z]){2,})(?=(?:.*[a-z]){2,})(?=(?:.*\d){2,})(?=(?:.*[!@#$%^&*()\-_=+{};:,.>\]\[]){2,})([A-Za-z0-9!#$@%^&*()\-_=+{};:,<.>\]\[]{15})(?!\S)
【问题讨论】:
标签: regex passwords special-characters regex-lookarounds lowercase