我无法将两个正则表达式组合在一起。密码标准要求:
表达式:
passwordStrengthRegularExpression="((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"
密码不能包含单词“Test”或“test”或单词的变体
passwordStrengthRegularExpression="((?=.*\"^((?!Test|test|TEST).*)$"
两者都是单独运作。
答案 0 :(得分:2)
因为你的第二个正则表达式主要使用负向前瞻,你可以稍微改造它并将其粘贴在另一个表达式的开头。首先,我要将你的第二个正则表达式改为:
"(?!.*(?:Test|test|TEST))"
在英语中,字符串可能不包含任何数量的(或零)字符,然后进行测试。
然后,我将在你的另一个表达的开头坚持正确
passwordStrengthRegularExpression="^(?!.*(?:Test|test|TEST))(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20}$"
最后,我将向您展示如何使正则表达式的一部分不区分大小写。这可能会也可能不会得到支持,具体取决于实际的程序。
passwordStrengthRegularExpression="^(?!.*(?i:test))(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20}$"
请参阅(?i:...)
?这意味着?
和:
之间的标志仅应用于表达式的那一部分,也就是说,只有该区域不区分大小写。
答案 1 :(得分:1)
结合您的要求和https://stackoverflow.com/a/2860380/156388我想出了这个:
(?=^[^\s]{6,}$)(?!.*(?i:test))((?=.*?\d)(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[^\w\d\s])(?=.*?[a-z])|(?=.*?[^\w\d\s])(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[A-Z])(?=.*?[^\w\d\s]))^.*
如果你想满足它上面的子弹要求,不要认为你的第一个正则表达式实际上工作正常。夹到20个字符,但没有说你必须。需要所有四个类别,但要求说明4中的3个。根本不检查用户名要求。所以我把大多数最初的正则表达式都搞砸了。
匹配这些(如预期的那样):
Short5
TeSamplePrd6
TEBREaKST6
WinningUser6@
它失败了(正如预期的那样):
SamplePassword
TestUser6@
Shrt5
TeSTTest
出于某种原因,它与此匹配:
TEBREKST6
但它只满足四个要求中的两个+最小长度 - 不确定为什么?
没有任何关于“密码不能包含您的用户名或全名超过两个连续字符的部分”的要求,我不确定您是否可以通过web.config min密码要求执行此操作,因为您没有可以在正则表达式中访问它。