有效的 RegEx 不适用于 ASP.Net MVC RegularExpression 属性

Valid RegEx doesn't work with ASP.Net MVC RegularExpression attribute

我有一个正则表达式来验证密码规则。

在 .Net 控制台应用程序中,它按预期正确拒绝或验证密码。

var strongRegex = new Regex("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])");
Console.WriteLine(strongRegex.IsMatch("Test_1234"));

这returns"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 个数字
  2. 必须至少有 1 个大写字符
  3. 必须至少有 1 个小写字符
  4. 必须有至少 1 个其他字符不符合前三个规则之一。

如果我没看错,试试这个:

^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])).*