我在使用ASP.NET项目的密码要求正则表达式时遇到了一些困难
输出要求如下
我正在使用的正则表达式如下(这是为了在web.config xml文件中使用而进行转义和编码:
passwordStrengthRegularExpression="^.*(?=.{8,})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()\?\+\,\-\.\/\:\:\;\<\=\>\[\]\\_\`\{\|\}\~\"\']).*$"
我无法弄清楚如何允许其中一项要求是可选的。
密码Reaction7应该足够了,但它被拒绝了,因为它没有特殊的字符。
任何人都知道我可以做些什么来评估除长度以外的4个要求中的3个?
答案 0 :(得分:1)
我不确定我喜欢这个解决方案,但是如果你只限于使用一个正则表达式(看起来像这样),你可以用管道或组来枚举所有可能性:
passwordStrengthRegularExpression="^.*(?=.{8,})((?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()\?\+\,\-\.\/\:\:\;\<\=\>\[\]\\_\`\{\|\}\~\"\'])|(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*()\?\+\,\-\.\/\:\:\;\<\=\>\[\]\\_\`\{\|\}\~\"\'])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()\?\+\,\-\.\/\:\:\;\<\=\>\[\]\\_\`\{\|\}\~\"\'])|(?=.*[a-z])(?=.*[A-Z])(?=.*\d)).*$"
相当长,但确实完成了工作。添加第五个要求会使这个字符串的大小爆炸,所以它不完全是“可扩展的”。