asp.net 正则表达式验证器和复杂正则表达式(区分大小写的开关)

本文关键字:正则表达式 大小写 开关 复杂 验证 net asp | 更新日期: 2023-09-27 17:56:44

我正在使用ASP的RegularExpressionValidator和一个非常复杂的正则表达式。这个已经工作得很好:

(?=^.{10,}$)(?=.*''d)(?=.*[a-z])(?=.*[A-Z])(?=.*[+#<>;.,:|''-@*!'"§$%&/()=?`´]).*$

但是我必须扩展它以添加检查当前用户名是否是密码的一部分(不区分大小写)。

例如,用户名是迈尔,不允许用户创建密码

i012k34KmeIer567+

所以我将表达式更改为

(?=^.{10,}$)(?=.*''d)(?=.*[a-z])(?=.*[A-Z])(?=.*[+#<>;.,:|''-@*!'"§$%&/()=?`´])(?i)(?!.*meier)(?-i).*$

并将其添加到asp:RegularExpressionValidator作为ValidationExpression.

不幸的是,这样做时

,我在添加密码时在浏览器中出现错误:

"SyntaxError: invalid quantifier"

浏览器显示的问题代码是:

function RegularExpressionValidatorEvaluateIsValid(val) {
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
        return true;
    **var rx = new RegExp(val.validationexpression);**
    var matches = rx.exec(value);
    return (matches != null && value == matches[0]);
}

"**"的线是有问题的。

我也已经尝试过RegEx.IsMatch,但我的正则表达式在那里有效。有没有人知道我如何解决这个问题,或者谁能告诉我我做错了什么?

非常欢迎任何帮助! :)请不要犹豫,问我是否描述了什么不够好的东西。

asp.net 正则表达式验证器和复杂正则表达式(区分大小写的开关)

除非将EnableClientScript="False"设置为禁用客户端验证,请参阅 msdn,否则表达式需要对 Javascript 的正则表达式引擎有效。

这就是为什么var rx = new RegExp(val.validationexpression);导致错误,您的表达式无效。

Javascript 不支持内联区分大小写的标志(?i)(?-i)并且您的长字符类需要修订

 [+#<>;.,:|''@*!"§$%&/()=?`´-]

由于您不能仅在 Javascript 中为密码负数提前查看打开不区分大小写,因此最好单独测试密码。