ASP.NET密码强度正则表达式

时间:2012-04-05 17:44:27

标签: asp.net regex

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

I found this to be added to the web.config

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

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

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

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

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

4 个答案:

答案 0 :(得分:2)

试试这个:

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

Here你可以找到很多样本

答案 1 :(得分:2)

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

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

将以粗体

匹配以下项目
  • helloth
  • hellot
  • hell0th
  • hell0Th
  • 他!l0th
  • 他!l0Th
  • 他!l0Th3534534
  • 他!l0Thdggfsg

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

[`~!@#$%^&*\(\)\-_}{\]\[=+\\|]

答案 2 :(得分: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 !~ /[!@#$%^\*-=\+\?]/

答案 3 :(得分:0)

'由Itrend solutions - 密码验证

添加

创建方法并传递文本以验证密码强度.. 昏暗的密码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 如果(password.Contains(smallcha))那么 smallchacount = smallchacount + 1 万一 下一个 Ifsmallchacount&lt; = 0然后 MessageBox(“密码必须包含一个字母字符”) 退出子 ENDIF

Dim Numbers()AsString = {“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”} DimnumbercountAsInteger = 0 ForEachnumAsStringIn Numbers 如果(password.Contains(num))那么 numbercount = numbercount + 1 万一 下一个 Ifnumbercount&lt; = 0然后 MessageBox(“密码必须包含一个数字数字”) 退出子 ENDIF

DimSpecial()AsString = {“@”,“#”,“$”,“%”,“^”,“&amp;”,“*”,“(”,“)”,“!”} DimcountSpecialAsInteger = 0 ForEach规范AsStringIn Special 如果(password.Contains(spec))那么 countSpecial = countSpecial + 1 万一 下一个 IfcountSpecial&lt; = 0然后 MessageBox(“密码必须包含一个特殊字符”) 退出子

更多说明请contact us