JS正则表达式在FireFox(火狐)与ie下的一个神奇差异

这是从网上看到,从而写下来记录的文章;

代码如下;

function makeMatcher() {
return /a/gi;
}
var x = makeMatcher();
var y = makeMatcher();
x.lastIndex = 10 ;
document .writeln(x===y);
document .writeln(y.lastIndex);
document .writeln(x.lastIndex);
//firefox: true 10 10
//ie: false 0 10

在Firefox(ff3下测试)运行结果为 true 10 10,Firefox视x和y是同一个对象。

在IE(ie7,ie8下测试)运行结果为 flase 0 10,IE视x和y是两个各自独立的对象。

再看下面这个正则的

function fun(){
document.write(/a/gi.test("a"));
}
fun();
fun();

在IE的执行结果是:truetrue

在FireFox的执行结果是:truefalse

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

一般global属性为true,做test应用不好.所以/a/gi意味着多个搜索

而test是单次匹配。正确的应该写/a/i,或/a/.

~~

未经允许不得转载:WEB前端开发 » JS正则表达式在FireFox(火狐)与ie下的一个神奇差异

赞 (0)