我在我的asp.net页面上使用了一个正则表达式验证器,用来验证一个密码。正则表达式为:
^(?=.*[0-9])(?=.*[a-zæøåA-ZÆØÅ])[a-zA-ZæøåÆØÅ0-9]{6,}$
现在,在IE8和FF3中,它可以正常工作,但无论我在IE7中尝试什么,它都会验证为false。这里有任何已知的错误吗?:S
提前感谢。
^(?=.*[0-9])(?=.*[a-zæøåA-ZÆØÅ])[a-zA-ZæøåÆØÅ0-9]{6,}$
现在,在IE8和FF3中,它可以正常工作,但无论我在IE7中尝试什么,它都会验证为false。这里有任何已知的错误吗?:S
提前感谢。
你需要对实体进行编码。尝试以下方法:
^(?=.*[0-9])(?=.*[a-z\xE6\xF8\xE5A-Z\xC6\xD8\xC5])[a-zA-Z\xE6\xF8\xE5A-Z\xC6\xD8\xC50-9]{6,}$
看起来IE7不喜欢字符串末尾的{6,}。在网上找到了一些相关文章。无论如何,解决方案是将其放在一个单独的区域中 :)
^(?=.{6,}$)(?=.*[0-9])(?=.*[a-zæøåA-ZÆØÅ])[a-zA-ZæøåÆØÅ0-9]*
我也遇到了Internet Explorer 7的问题。
以下是我使用的代码,要求8个字符,包含数字和字母(允许空格):
(?!^[0-9]*$)(?!^[ a-zA-Z!@#$%^&*()_+=<>?]*$)^([ a-zA-Z!@#$%^&*()_+=<>?0-9]{8,20})$
看起来你的示例存在一些编码问题。除非你绝对需要在客户端上进行操作,否则我建议使用CustomValidator通过OnServerValidate事件处理程序执行逻辑进行验证。在服务器端进行验证可以避免JavaScript正则表达式跨浏览器兼容性问题。
{6,}
,而在于先行断言。Steve Levithan在Jan Goyvaerts的帮助下,在他的博客中对这个Bug进行了很好的分析:http://blog.stevenlevithan.com/archives/regex-lookahead-bug。 - Alan Moore