我正在处理一个要求,我必须创建一个强密码。必须满足以下条件:
->它应该是大写字母、小写字母、数字和特殊字符的组合
我可以为此写一个正则表达式吗?如果是怎么办?
我正在处理一个要求,我必须创建一个强密码。必须满足以下条件:
->它应该是大写字母、小写字母、数字和特殊字符的组合
我可以为此写一个正则表达式吗?如果是怎么办?
例如,要验证至少 8 个字符的密码:
if (Regex.IsMatch(subjectString,
@"^ # Start of string
(?=.*\p{Lu}) # Assert at least one uppercase letter
(?=.*\p{Ll}) # Assert at least one lowercase letter
(?=.*\d) # Assert at least one digit
(?=.*[^\p{L}\d]) # Assert at least one other character
.{8,} # Match at least 8 characters
$ # End of string",
RegexOptions.IgnorePatternWhitespace))
并不真地。正则表达式旨在搜索/解析字符串,而不是生成字符串。是否有可能以某种方式利用它们,但代码的根不能(或至少不应该)依赖于正则表达式。
正则表达式可用于验证特定密码是否满足某些要求(即询问已生成的密码是否强密码)。因此,一种可能的策略是生成随机密码并继续尝试,直到验证为强密码。那将是一个非常糟糕的主意。您最好编写生成算法,以便它始终首先生成强密码。
如果您的问题是是否可以使用正则表达式来验证用户生成的密码,那么请相应地更改问题,因为如果是这样,那么答案是“是”。
如果您使用 FormsAuthentication,请passwordStrengthRegularExpression
在配置提供程序时尝试使用该属性。
http://msdn.microsoft.com/en-us/library/ms998347.aspx#paght000022%5Fsqlmembershipproviderconfig
是的。使用System.Text.RegularExpressions.Regex.IsMatch(string input,string pattern)
方法。
if( Regex.IsMatch(pw,"[a-z]") &&
Regex.IsMatch(pw,"[A-Z]") &&
Regex.IsMatch(pw,"[0-9]") &&
Regex.IsMatch(pw,"[!@#\$%\^&\*\(\)]"))
您可以为此编写正则表达式,几乎可以编写任何内容。
我相信这会成功:
^.*(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&+=]).*$
我在我的项目中使用了它,但添加了我强烈建议的长度要求,如下所示:
^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&+=]).*$