正则表达式不起作用 - 最少 1 个大写字母、最少 3 个小写字母、最少 1 个来自定义组的特殊字符(更多描述)
Regex not working - minimum 1 uppercase, minimum 3 lowercase, minimum 1 special character from the defined group (more in description)
我需要根据以下要求创建一个正则表达式:密码至少需要 8 个字符,最多 12 个字符,至少 1 个大写字母,至少 3 个小写字母,至少 1 个数字和至少 1 个特殊字符来自组 (#*.!?$),不带括号。第一个字符需要是大写或小写字母。密码中不能连续出现两个相同的字符。
我做了这个,但它不起作用:
^(?=.{8,12}$)(([a-z]|[A-Z])(?=.*\d){1,}(?=.*[a-z]){3,}(?=.*[A-Z]){1,}(?=.*[!.?*$#])?(?!))+$
我尝试用 Abcd123! 测试它,但它不起作用。任何人都可以解释我在哪里犯了错误,我在这里做了什么?
您使用 {1,}
之类的量词进行前瞻,这是不正确的。
我想你是想像这样使用前瞻:
^(?=.{8,12}$)(?=[^A-Z]*[A-Z])(?=\D*\d)(?=(?:[^a-z]*[a-z]){3})(?=[^\s#*.!?$]*[#*.!?$])(?!.*(.))(?:[a-z]|[A-Z])[a-zA-Z0-9#*.!?$,]+$
关于图案
^
字符串开头
(?=.{8,12}$)
断言长度 8 - 12
(?=[^A-Z]*[A-Z])
断言大写字符
(?=\D*\d)
断言数字
(?=(?:[^a-z]*[a-z]){3})
断言 3 个小写字符
(?=[^\s#*.!?$]*[#*.!?$])
断言特殊字符
(?!.*(.))
断言不是 2 个连续的字符
(?:[a-z]|[A-Z])
以大写或小写字符开头
[a-zA-Z0-9#*.!?$,]+
匹配 1+ 次字符 class 中列出的任何一个
$
断言字符串结束
我需要根据以下要求创建一个正则表达式:密码至少需要 8 个字符,最多 12 个字符,至少 1 个大写字母,至少 3 个小写字母,至少 1 个数字和至少 1 个特殊字符来自组 (#*.!?$),不带括号。第一个字符需要是大写或小写字母。密码中不能连续出现两个相同的字符。 我做了这个,但它不起作用:
^(?=.{8,12}$)(([a-z]|[A-Z])(?=.*\d){1,}(?=.*[a-z]){3,}(?=.*[A-Z]){1,}(?=.*[!.?*$#])?(?!))+$
我尝试用 Abcd123! 测试它,但它不起作用。任何人都可以解释我在哪里犯了错误,我在这里做了什么?
您使用 {1,}
之类的量词进行前瞻,这是不正确的。
我想你是想像这样使用前瞻:
^(?=.{8,12}$)(?=[^A-Z]*[A-Z])(?=\D*\d)(?=(?:[^a-z]*[a-z]){3})(?=[^\s#*.!?$]*[#*.!?$])(?!.*(.))(?:[a-z]|[A-Z])[a-zA-Z0-9#*.!?$,]+$
关于图案
^
字符串开头(?=.{8,12}$)
断言长度 8 - 12(?=[^A-Z]*[A-Z])
断言大写字符(?=\D*\d)
断言数字(?=(?:[^a-z]*[a-z]){3})
断言 3 个小写字符(?=[^\s#*.!?$]*[#*.!?$])
断言特殊字符(?!.*(.))
断言不是 2 个连续的字符(?:[a-z]|[A-Z])
以大写或小写字符开头[a-zA-Z0-9#*.!?$,]+
匹配 1+ 次字符 class 中列出的任何一个
$
断言字符串结束