2009-10-10 59 views
2

我有一个正在使用的asp.net RegularExpressionValidator检查TextField的正则表达式。Javascript正则表达式浏览器不一致?

^(?=.*[a-z])(?=.*\d)(?=.*[A-Z]).{8,}$ 

的例子字符串我已经迷迷糊糊的 'RedCoal1'

火狐=匹配
IE8 =匹配
浏览器=匹配

IE7 =不匹配

为什么! !

回答

6

在WSH的RegExp中使用IE is just broken执行lookahead。这个bug通常会在这种情况下弹出,试图使用一个正则表达式来同时验证几件事情。

再加上一些旧版本的浏览器根本不支持lookahead(它不在原来的JavaScript规范中,尽管它现在在ECMA-262-3中)。总而言之,最好避免在浏览器RegExp中使用Lookahead。

最好将每次检查(每个字符类别和长度)分成手动验证步骤。

+0

是的,我有同样的经历。所以我所做的就是避免对特定验证器进行客户端验证。 – 2009-10-10 06:11:15