2

我在我的 ASP.NET 网站上使用 ASP.NET Membership 属性进行身份验证。我希望密码非常安全。我希望它们长 7 位,包含一个字母、数字和一个特殊字符。

我发现这被添加到 web.config

passwordStrengthRegularExpression=" @\"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})"

但是,当我将此添加到我的会员资料时,我收到以下错误:

Name cannot begin with the '(' character, hexadecimal value 0x28. Line 26, position 445.

所以看起来它在 @ 符号之后没有看到转义字符,它正在尝试使用该引号来结束标记。知道我做错了什么吗?

最后,我将如何修改它以也需要一个小写字母和一个大写字母?

4

4 回答 4

3

如果您试图转义"并且这是在您的 web.config 文件中,您需要这样做",这是 xml 的正确引用实体。至于你想要的正则表达式,试试这个

^(?=[a-z]+)(?=.*?\d+)(?=.*?[`~!@#$%^&*\(\)\-_}{\]\[=+\\|]+).{7,}$

将匹配以下粗体项目

  • 地狱
  • 你好
  • 地狱0号
  • 地狱0Th
  • 他!第 10 次
  • 他!l0Th
  • 他!l0Th3534534
  • 他!l0Thdggfsg

(?=.*?[A-Z]+)如果您还希望至少需要一个大写字母,则可以添加,并使其仅匹配最后 3 个。最后,您可以从上面的正则表达式修改以下块,以仅包含您想要允许的特殊字符。

[`~!@#$%^&*\(\)\-_}{\]\[=+\\|]
于 2012-04-05T18:46:48.477 回答
3

试试这个:

ValidationExpression="(?=^.{7,51}$)([A-Za-z]{1})([A-Za-z0-9!@#$%_\^\&\*\-\.\?]{5,49})$" 

在这里你可以找到很多样品

于 2012-04-05T17:46:32.297 回答
1

与其处理没有人理解的表达式,不如使用三个(或更多)。以下是这个想法的一些伪代码:

abort('to short') if password.length < 8
abort('at least one letter') if password !~ /[a-z]/i
abort('at least two digits') if password !~ /[0-9].*[0-9]/
abort('at least one special character') if password !~ /[!@#$%^\*-=\+\?]/
于 2012-04-05T17:56:01.660 回答
0

'由Itrend 解决方案添加 -密码验证

创建一个方法并传递您的文本以验证密码强度.. Dim password AsString password = Trim(txtnewpassword.Text)

DimSmallCharacter() AsString = {“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、 “l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x” "、"y"、"z"、"A"、"B"、"C"、"D"、"E"、"F"、"G"、"H"、"J"、"K"、 “L”、“M”、“N”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X” ", "Y", "Z"} DimsmallchacountAsInteger = 0 ForEachsmallchaAsStringInSmallCharacter If (password.Contains(smallcha)) Then smallchacount = smallchacount + 1 EndIf Next Ifsmallchacount<= 0 Then MessageBox("密码必须包含一个字母字符") Exit Sub EndIf

Dim Numbers() AsString = {“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”} DimnumbercountAsInteger = 0 ForEachnumAsStringIn Numbers If (password.Contains(num)) Then numbercount = numbercount + 1 EndIf Next Ifnumbercount<= 0 Then MessageBox("密码必须包含一个数字") Exit Sub EndIf

DimSpecial() AsString = {"@"、"#"、"$"、"%"、"^"、"&"、"*"、"("、")"、"!"} DimcountSpecialAsInteger = 0 ForEach spec AsStringIn Special If (password.Contains(spec)) Then countSpecial = countSpecial + 1 EndIf Next IfcountSpecial<= 0 Then MessageBox("密码必须包含一个特殊字符") Exit Sub

如需更多说明,请联系我们

于 2013-07-19T13:50:28.853 回答