我正在尝试使用以下规则验证密码:
到目前为止,我写了这段代码:
[0-9a-zA-Z] (?=(.*\d){2}) {8,}
我不确定为什么我输入的密码会返回无效,尽管它遵循规则。
答案 0 :(得分:1)
请记住,空格在正则表达式模式中是有意义的,因此最后需要至少8个空格。正则表达式中没有锚点,因此即使您编写正确的模式,长度限制也可能不起作用。到目前为止,这将匹配一个字母数字,一个空格,后面跟着2个出现的任何0+字符后跟一个数字,但由于有{8,}
量词的空格,这个模式永远不会匹配任何东西。
你需要
^(?=.{8})[a-zA-Z]*(?:\d[a-zA-Z]*){2}[a-zA-Z0-9]*$
请参阅regex demo
^
- 字符串开头(?=.{8})
- 至少8个字符[a-zA-Z]*
- 零个或多个字母(?:\d[a-zA-Z]*){2}
- 2个序列:
\d
- 一个数字(可以替换为[0-9]
)[a-zA-Z]*
- 零个或多个字母[a-zA-Z0-9]*
- 0+字母数字字符$
- 字符串结束。或者,您可以使用
^(?=(?:[a-zA-Z]*\d){2})[a-zA-Z0-9]{8,}$
在这里,(?=(?:[a-zA-Z]*\d){2})
将需要至少2次出现0+个字母,后跟字符串中的数字,[a-zA-Z0-9]{8,}
将匹配8个或更多字母数字字符。