javascript 正则表达式 g 的相关资料

在编写代码的时候出现莫名的错误,如下:

var regNum = /^\d+$/g; 

regNum.test("344"); // 返回true

//regNum = /^\d+$/g; //加上此段代码,下面测试一定返回true
regNum.test("344"); // 返回false,期待返回true

//regNum = /^\d+$/g; //加上此段代码,下面测试一定返回true
regNum.test("344"); // 返回true

//以上测试数据“344”可以替换成任意数字,可以看到返回结果为true,false,true,false,true....这样反复的结果

   

同样的代码返回不一样的结果,实在是汗颜+郁闷,测试了半天突然醒悟是不是表达式就已经写错了。

网上找资料发现表达式是没有问题,问题出现对“g” 的理解上。

以前一直以为“g” 表示全局匹配只针对当前字符串(实际上也针对正则表达式),结果正则文档上的说明是:每次匹配一次都会返回 

lastIndex值,并且作为全局变量保存(这句是我的理解),也就是当匹配第二个字符串的时候,起始地址已经不是0了,而是上一次匹配结果的index值。
 
 

 

 

posted on 2011-02-24 14:22  我是流氓  阅读(166)  评论(0编辑  收藏  举报

导航