我正在尝试使用ASP.NET regularexpressionvalidator来应用强制执行以下策略的密码策略:
密码应包含至少6个字符,至少一个小写字母,至少一个大写字母,至少一个数字和至少一个特殊字符。这是表达式:
^。(?= {6,})(?=。 \ d)(?= [AZ])(?=。 [AZ] )(= [@#$%^&安培;!+ = -_(?)]。)* $
我发现奇怪的是,除了下面的场景,它才能正常工作,
如果我使用没有特殊字符的所有必需组合,例如Hello123,则会将其视为有效密码。以下是用于测试的控件:
知道为什么吗?
答案 0 :(得分:1)
我最近遇到了类似的问题。您是否只在IE中看到问题?您可能会遇到regex lookahead bug。
查看我的post,也许会有所帮助。
答案 1 :(得分:1)
谢谢你们, 我发现了这个问题。特殊字符需要转义..
答案 2 :(得分:0)
我认为这对你有用:
(?= ^ {6} $)??((= \ d)(= [AZ])(= [AZ])|??(=。 \ d)(= [^ A-ZA-Z0-9])(= [AZ])|???(= [^ A-ZA -z0-9])(= [AZ])(= [AZ])|????(= \ d)(= [AZ ])(?=。 [^ A-ZA-Z0-9]))^ *
我在Asp.Net正则表达式验证程序控件中使用它来验证密码的密码要求与您的密码相同。
唯一的问题是我认为它将允许该字段为空,因此我还使用了必需的字段验证器
不幸的是,我对正则表达式知之甚少,无法弄清楚为什么你的工作不起作用。