我有一个正则表达式来验证密码规则。
在.Net控制台应用程序中,它按预期正确拒绝或验证密码。
var strongRegex = new Regex("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])");
Console.WriteLine(strongRegex.IsMatch("Test_1234"));
正如预期的那样,这将返回"true"。
当我在ASP.Net MVC项目中将其添加到我的模型中时,jQuery在客户端上的不引人注目的验证会拒绝这个值。
[RegularExpression("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])"]
由于阅读了以前框架版本中的大小写敏感性问题,我查看了页面源代码,以了解这是如何呈现的,但这里似乎不是这样。。。它在input
元素上呈现以下内容:
data-val-regex-pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])"
这会导致在控制台应用程序中工作的相同值("Test_1234"(无法通过客户端验证。
似乎您的密码验证规则是:
- 必须至少有一个数字
- 必须至少有1个大写字符
- 必须至少有1个小写字符
- 必须至少有1个其他字符与前三个规则之一不匹配
如果我读对了,试试这个:
^((?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])).*