在IE7中运行正则表达式验证程序时的奇怪错误

时间:2009-07-20 21:08:38

标签: asp.net regex internet-explorer-7

我的asp.net页面上有一个正则表达式验证器,它验证了密码。正则表达式是

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

..现在,它在IE8和FF3中工作正常,但无论我在IE7中尝试什么,它都会验证为false。有没有知道的错误,我应该知道这里? :S

提前致谢..

4 个答案:

答案 0 :(得分: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 :(得分:1)

似乎IE7不喜欢字符串末尾的{6,}。在网络上发现了一些关于此的文章。无论如何,解决方案是将它自己放在一个区域:)

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

答案 2 :(得分:0)

看起来您的示例存在一些编码问题。除非您必须在客户端使用它,否则我建议使用一个验证的CustomValidator,它通过OnServerValidate事件处理程序执行您的逻辑。在服务器端进行验证可以使您避免使用javascript正则表达式跨浏览器兼容性怪异。

答案 3 :(得分:0)

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

这是我能够使用的,需要8个字符,带有数字和数字(允许空格):

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