这个问题我无法理解,为什么,求高人指点,请看代码:var reg=/^(.+?):(.+)$/gi,s='a:a',c,cfg;
alert(reg.test(s)+' '+reg.source+' '+s);//弹出true ^(.+?):(.+)$ a:a
c=s.replace(reg,'$1');
alert(reg.test(s)+' '+reg.source+' '+s);//弹出false ^(.+?):(.+)$ a:a,为什么?????
if(reg.test(s))cfg=s.replace(reg,'$2');为什么在第一次replace后再测试就为false????
alert(reg.test(s)+' '+reg.source+' '+s);//弹出true ^(.+?):(.+)$ a:a
c=s.replace(reg,'$1');
alert(reg.test(s)+' '+reg.source+' '+s);//弹出false ^(.+?):(.+)$ a:a,为什么?????
if(reg.test(s))cfg=s.replace(reg,'$2');为什么在第一次replace后再测试就为false????
alert(reg.test(s)+' '+reg.source+' '+s);//弹出true ^(.+?):(.+)$ a:a
//c=s.replace(reg,'$1');
alert(reg.test(s)+' '+reg.source+' '+s);//弹出false ^(.+?):(.+)$ a:a,为什么?????
//if(reg.test(s))cfg=s.replace(reg,'$2');或者
var reg=/^(.+?):(.+)$/gi,s='a:a',c,cfg;
alert(reg.test(s)+' '+reg.source+' '+s);//弹出true ^(.+?):(.+)$ a:a
//c=s.replace(reg,'$1');
reg.compile()
alert(reg.test(s)+' '+reg.source+' '+s);//弹出false ^(.+?):(.+)$ a:a,为什么?????
//if(reg.test(s))cfg=s.replace(reg,'$2');
alert(reg.test(s)+' '+reg.source+' '+s);//弹出true ^(.+?):(.+)$ a:a
c=s.replace(reg,'$1');
reg.lastIndex = 0;
alert(reg.test(s)+' '+reg.source+' '+s);//弹出false ^(.+?):(.+)$ a:a,为什么?????
if(reg.test(s))cfg=s.replace(reg,'$2');
另外,全局正则表达式对象只有一个,每执行一次正则表达式查找,都会改变这个全局对象的属性值。