REGEX 验证不能包含某些字符的密码
REGEX to validate password that can't contain some caracters
我需要检查密码是否符合以下规则:
- 至少 8 个字符(lenth)
- 一个大写字母
- 一个小写字母
- 一个数
- 一个特殊字符
- 不能包含“.”或“_”(棘手的部分)
例如:
- Bft$ns2E => 应该匹配
- H2od%^.,3 => 不应匹配(注意“.”)
我试过这个:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
满足所有规则,最后一条除外(不能包含“.”或“_”)。正则表达式对我来说总是很痛苦,我不知道该怎么做。
感谢大家!
你的正则表达式是正确的。我会使用:
^(?=.*?[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W)(?!.*[._]).{8,}$
此模式表示:
^
(?=.*?[A-Z]) assert capital letter
(?=.*[a-z]) assert lowercase letter
(?=.*\d) assert digit
(?=.*\W) assert non word/special character
(?!.*[._]) assert NO dot or underscore
.{8,} match a password of length 8 or greater
$
使用像这样的先行 (?=(.*[a-z]){1,})
,您可以省略带有量词 {1,}
的组,因为在字符串中断言一次就足够了。
如果您不想匹配 space .
或 _
您可以使用 negated character class 来匹配 8 次或更多次,但不包括这些字符。
在前瞻断言中也使用否定字符 class 可防止不必要的回溯。
^(?=[^A-Z\r\n]*[A-Z])(?=[^a-z\r\n]*[a-z])(?=[^\d\r\n]*\d)(?=\w*\W)[^\s._]{8,}$
模式匹配:
^
字符串开头
(?=[^A-Z\r\n]*[A-Z])
断言字符 A-Z
(?=[^a-z\r\n]*[a-z])
断言一个字符 a-z
(?=[^\d\r\n]*\d)
断言一个数字
(?=\w*\W)
断言一个非单词字符
[^\s._]{8,}
匹配任何字符 8 次以上,白色 space 字符 .
或 -
$
字符串结束
我需要检查密码是否符合以下规则:
- 至少 8 个字符(lenth)
- 一个大写字母
- 一个小写字母
- 一个数
- 一个特殊字符
- 不能包含“.”或“_”(棘手的部分)
例如:
- Bft$ns2E => 应该匹配
- H2od%^.,3 => 不应匹配(注意“.”)
我试过这个:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
满足所有规则,最后一条除外(不能包含“.”或“_”)。正则表达式对我来说总是很痛苦,我不知道该怎么做。
感谢大家!
你的正则表达式是正确的。我会使用:
^(?=.*?[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W)(?!.*[._]).{8,}$
此模式表示:
^
(?=.*?[A-Z]) assert capital letter
(?=.*[a-z]) assert lowercase letter
(?=.*\d) assert digit
(?=.*\W) assert non word/special character
(?!.*[._]) assert NO dot or underscore
.{8,} match a password of length 8 or greater
$
使用像这样的先行 (?=(.*[a-z]){1,})
,您可以省略带有量词 {1,}
的组,因为在字符串中断言一次就足够了。
如果您不想匹配 space .
或 _
您可以使用 negated character class 来匹配 8 次或更多次,但不包括这些字符。
在前瞻断言中也使用否定字符 class 可防止不必要的回溯。
^(?=[^A-Z\r\n]*[A-Z])(?=[^a-z\r\n]*[a-z])(?=[^\d\r\n]*\d)(?=\w*\W)[^\s._]{8,}$
模式匹配:
^
字符串开头(?=[^A-Z\r\n]*[A-Z])
断言字符 A-Z(?=[^a-z\r\n]*[a-z])
断言一个字符 a-z(?=[^\d\r\n]*\d)
断言一个数字(?=\w*\W)
断言一个非单词字符[^\s._]{8,}
匹配任何字符 8 次以上,白色 space 字符.
或-
$
字符串结束