鉴于以下RegEx表达式,在regexlib.com上使用字符串“2rocks”进行测试会产生“匹配”。但是,在我的.NET应用程序中,它导致正则表达式验证程序抛出验证错误。
^(?=.*[A-Za-z])[a-zA-Z0-9@\-_\+\.]{6,32}$
如果我在我的应用程序和regexlib.com中将字符串更改为“rocks2”,我会在两个地方都匹配。
目标是有一个正则表达式,它要求字符串的长度在6-32个字符之间,并允许AZ,az,数字和正则表达式中包含的其他特殊字符,强制至少一个字母。< / p>
这是ASP标记,我完全糊涂了。
<asp:regularexpressionvalidator
id=vldRegEx_LoginID
runat="server"
ErrorMessage="Regex Error Message"
Display="Dynamic"
ControlToValidate="txtLoginID"
ValidationExpression="^(?=.*[A-Za-z])[a-zA-Z0-9@\-_\+\.]{6,32}$">
<img src="images/error.gif" border="0">
</asp:regularexpressionvalidator>
答案 0 :(得分:6)
您传递的ValidationExpression实际上是用作客户端javascript正则表达式的表达式。 Javascript正则表达式不支持.NET正则表达式的所有功能,这就是您遇到问题的原因。您有两种选择:
答案 1 :(得分:0)
你可能被this bug咬伤了。在JavaScript RegExp中应该避免使用Lookahead断言。