Jquery Unobstrustive 和 MVC 5 - RegEx 在 jquery unobstrustive 中从未满足

Jquery Unobstrustive and MVC 5 - RegEx never satisfied in jquery unobstrustive

我正在编写一个 MVC 应用程序,我需要一个强密码。很简单,我使用以下 属性.

设置了一个视图模型
    [Required]
    [RegularExpression(@"(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,", ErrorMessage ="1 upper, 1 lower, 1 digit, 8 character minimum length")]
    public string PasswordEntered { get; set }

当我使用服务器验证时,这工作得很好:只要我输入一个小写字母、一个数字和总共 8 个字符,我的模型就是有效的。

一旦我打开 jquery 不显眼的验证,我的所有其他字段都会在没有往返的情况下进行验证,但密码顽固地给我错误消息,即使我输入了像 Password123 这样的有效密码。

为什么正则表达式无法工作?我该如何纠正?

编辑: 进一步的研究。在调试和逐步执行 jquery 代码时,我看到了这个

return (match && (match.index === 0) && (match[0].length === value.length));

所以因为我的正则表达式 return 任何匹配组,jquery 认为正则表达式失败。我不确定如何获得匹配组来满足 jquery...

在 RegEx 速成班超过 2 小时并通过 jquery 代码后,我发现 jquery 要求匹配组的长度与被测试的输入相同。由于我的原始正则表达式不包含匹配组,因此 jquery 函数失败。我修改了我原来的正则表达式,它现在可以工作了。

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(.{8,}$)