正则在FireFox和IE下使用test的不同

今天同事遇到这样的问题,查明原因.记下:

由于FireForx和IE的执行javascript的引擎不同,所以会有些不同。以下的例子

<script language="javascript" type="text/javascript">
function fun(){
 document.write(/a/gi.test("a"));
}
fun()
fun()
</script>

在IE的执行结果是:truetrue

在FireFox的执行结果是:truefalse

在正则中/expression/gi,g是表示global全局,i是表示不区分大小写。

一般global属性为true,做test应用不好.所以/a/gi意味着多个搜索
而test是单次匹配。正确的应该写/a/i,或/a/.

FireFox规范点了!

 

posted @ 2009-05-25 15:32  harry.guo  阅读(...)  评论(... 编辑 收藏