【发布时间】:2013-01-30 12:50:30
【问题描述】:
我正在使用带有非常复杂的正则表达式的 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,但我的正则表达式在那里工作。有谁知道我该如何解决这个问题,或者谁能告诉我我做错了什么?
非常欢迎任何帮助! :) 请不要犹豫,问我是否描述得不够好。
【问题讨论】:
-
那么您的问题/问题是什么?密码还是用户名?
-
如果用户名出现在我的密码中,我必须检查不区分大小写。所以为此我需要扩展上面的正则表达式。
-
如果讨论密码的部分无关紧要,可以编辑掉吗?这很混乱。
-
好的,我会让它变得更简单。但这是关于密码中出现用户名的问题。
-
您可能会发现通过将多个验证器控件与同一字段关联起来更容易实现这一点,而不是将所有内容都塞进一个验证器中。
标签: c# asp.net regex validation