密码字段的正则表达式

时间:2014-08-13 09:10:55

标签: regex

我需要一个密码字段的正则表达式:

  • 必须有1个号码

  • 必须有1个字母(大写)

  • 必须有1个字母(小写)

  • 长度必须至少为8个字符

  • 必须只包含字母和数字字符

到目前为止,我有:

((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,})

这符合我上面的大部分条件。但是如何将其限制为仅允许使用字母数字字符。

2 个答案:

答案 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