要匹配出来三个大概得这么写
var reg = /hello[^hello]*/ig;
var txt = "HelloNirvanahelloworldhello";
alert(txt.match(reg));
这样出来的三个匹配也和你想要的有一点不同哦。因为正则的匹配过程就是,产生一个匹配,然后从这个匹配的下一个位置开始再匹配。正向预查可以不吃掉预查的串,但也仅此而已,想要象你要的回到最前面然后产生一个不同的匹配得自己写代码实现。
var reg = /hello[^hello]*/ig;
var txt = "HelloNirvanahelloworldhello";
alert(txt.match(reg));
这样出来的三个匹配也和你想要的有一点不同哦。因为正则的匹配过程就是,产生一个匹配,然后从这个匹配的下一个位置开始再匹配。正向预查可以不吃掉预查的串,但也仅此而已,想要象你要的回到最前面然后产生一个不同的匹配得自己写代码实现。
var reg = /hello[^hello]*/ig;
var txt = "HelloNirvanahelloworldhello";
var ar = txt.match(reg);
for (var i=0;i<ar.length;i++){
st = ar[i];
ar[i] = txt.match(new RegExp(st+"\\w*"),"ig");
txt = txt.substr(txt.indexOf(st)+st.length)
}
alert(ar)
-------------------------------------------------
因为正则的匹配过程就是,产生一个匹配,然后从这个匹配的下一个位置开始再匹配。正向预查可以不吃掉预查的串,但也仅此而已,想要象你要的回到最前面然后产生一个不同的匹配得自己写代码实现。
-------------------------------------------------像这种原理性的东西在哪里才能学到?MSDN上有么?
var reg = /hello\w*?/ig;这样就可以匹配出3个hello, 不过版本要求有点高IE5.0+
这个正则有问题吧,[^hello]应该不是不包括"hello"串,而是不包含他们中的任意一个字母都会匹配.