我们正在使用标准的ASP.NET身份验证提供程序(AspNetSqlMembershipProvider),并且defualt密码强度要求对我们的需求有点过分。
我们要求用户至少输入一个字母数字密码(即字母和至少一个强制性数字,混合大小写和非字母数字字符,如果用户愿意的话)。
有人可以建议PasswordStrengthRegularExpression设置会实现这个目标吗?
此外,如果他们尝试使用的密码未通过正则表达式检查,我们如何控制向用户显示的错误消息?
发现minRequiredNonalphanumericCharacters
属性必须设置为0
,否则此设置将覆盖使用的任何正则表达式
答案 0 :(得分:40)
我们刚刚实现了以下表达式来验证一个8到16个字符的pwd,并包含以下4个项目中的三个:大写字母,小写字母,符号,数字
(?=^[^\s]{8,16}$)((?=.*?\d)(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[^\w\d\s])(?=.*?[a-z])|(?=.*?[^\w\d\s])(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[A-Z])(?=.*?[^\w\d\s]))^.*
各个组成部分的解释:
在长度段之后注意双重parens,然后在表达式中你会看到几个| s。这允许对/或允许的4种可能组合进行比较。
写完这篇文章之后我才注意到这个问题是在一年前提出来的。由于我在搜索中遇到过这个问题,我希望其他人也能从我们的解决方案中受益。
答案 1 :(得分:16)
这是一个正则表达式,允许所有字符,并且至少需要一个数字,并且至少需要6个字符。
^.*(?=.{6,})(?=.*\d).*$
如果您想要更多或更少的字符定义,只需更改(?=.{6,})
即可反映您想要的字符数。