我正在使用ASP的RegularExpressionValidator,其包含一个非常复杂的正则表达式。以下是已经能够很好地工作的正则表达式:
(?=^.{10,}$)(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[+#<>;.,:|\\-@*!\"§$%&/()=?`´]).*$
但我需要扩展它以添加检查当前用户名是否是密码的一部分(不区分大小写)。
例如,如果用户名为Meier,则不允许用户创建以下密码:
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
,但我的正则表达式可以工作。有人有想法如何解决这个问题或者能告诉我我做错了什么吗?
非常感谢任何帮助!:) 如果我描述得不够清楚,请不要犹豫问我。