3

我们需要确保密码符合特定的强度格式(这是在 web.config 中配置的)。要求是密码必须包含一定数量的大写字符和一定数量的非字母数字字符。我想用验证密码的正则表达式注释我的密码属性,以确保密码包含 x 个大写字母和 y 个非字母字符。请帮助正则表达式。

4

2 回答 2

3

在单个正则表达式中检查这样的多个条件最好使用前瞻来完成,例如,假设您想要 3 个大写字符和 4 个非字母字符,您可以使用以下正则表达式:

^(?=(?:.*[A-Z]){3})(?=(?:.*[^a-zA-Z]){4})

说明:首先,让我们考虑一下只检查第一个条件的正则表达式是什么样的。要匹配 3 个大写字符,我们可以使用以下命令:

(?:.*[A-Z]){3}

我们仍然可以通过将它放入前瞻中来检查这个条件,这就是它(?=...)所做的,所以现在在(?=(?:.*[A-Z]){3})不消耗任何字符的情况下检查这个条件。此时我们可以使用 来检查第二个条件(?:.*[^a-zA-Z]){4}。我也将第二个条件放在了前瞻中,这样添加更多检查就很简单了。

请注意,当前的正则表达式实际上不会匹配任何字符,如果所有条件都匹配,它将匹配字符串的开头(零个字符),否则匹配将失败。如果您希望它也实际使用字符,只需添加.*到末尾即可。

于 2012-06-05T23:44:50.423 回答
2

我找到了一篇可以为我解决问题的好文章 http://www.zorched.net/2009/05/08/password-strength-validation-with-regular-expressions/

于 2012-06-05T23:45:06.377 回答