我需要一个密码字段的正则表达式:
必须有1个号码
必须有1个字母(大写)
必须有1个字母(小写)
长度必须至少为8个字符
必须只包含字母和数字字符
到目前为止,我有:
((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,})
这符合我上面的大部分条件。但是如何将其限制为仅允许使用字母数字字符。
答案 0 :(得分:4)
使用[a-zA-Z0-9]
代替.
并锚定您的正则表达式:
^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,})$
答案 1 :(得分:3)
您可以在最后更改基础:
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])[^\W_]{8,})
此解决方案希望您的正则表达式引擎锚定。如果没有,请使用^$
锚定它们。
[^\W_]
是否定字符类。它断言此字符不是单词字符或_
。
由于单词字符包含字母数字字符和下划线,因此这种双重否定字符类速记[^\W_]
可用于这些情况。
如果你的正则表达式引擎支持ascii类,你也可以使用[[:alnum:]]
。
这是regex demo!