在IE7中运行正则表达式验证器时出现奇怪的错误

4
我在我的asp.net页面上使用了一个正则表达式验证器,用来验证一个密码。正则表达式为:
^(?=.*[0-9])(?=.*[a-zæøåA-ZÆØÅ])[a-zA-ZæøåÆØÅ0-9]{6,}$

现在,在IE8和FF3中,它可以正常工作,但无论我在IE7中尝试什么,它都会验证为false。这里有任何已知的错误吗?:S

提前感谢。

4个回答

1

你需要对实体进行编码。尝试以下方法:

^(?=.*[0-9])(?=.*[a-z\xE6\xF8\xE5A-Z\xC6\xD8\xC5])[a-zA-Z\xE6\xF8\xE5A-Z\xC6\xD8\xC50-9]{6,}$

1

看起来IE7不喜欢字符串末尾的{6,}。在网上找到了一些相关文章。无论如何,解决方案是将其放在一个单独的区域中 :)

^(?=.{6,}$)(?=.*[0-9])(?=.*[a-zæøåA-ZÆØÅ])[a-zA-ZæøåÆØÅ0-9]*

1
问题不在于{6,},而在于先行断言。Steve Levithan在Jan Goyvaerts的帮助下,在他的博客中对这个Bug进行了很好的分析:http://blog.stevenlevithan.com/archives/regex-lookahead-bug。 - Alan Moore

0

我也遇到了Internet Explorer 7的问题。

以下是我使用的代码,要求8个字符,包含数字和字母(允许空格):

(?!^[0-9]*$)(?!^[ a-zA-Z!@#$%^&amp;*()_+=<&gt;?]*$)^([ a-zA-Z!@#$%^&amp;*()_+=<&gt;?0-9]{8,20})$

0

看起来你的示例存在一些编码问题。除非你绝对需要在客户端上进行操作,否则我建议使用CustomValidator通过OnServerValidate事件处理程序执行逻辑进行验证。在服务器端进行验证可以避免JavaScript正则表达式跨浏览器兼容性问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接