要匹配出来三个大概得这么写
var reg = /hello[^hello]*/ig;
var txt = "HelloNirvanahelloworldhello";
alert(txt.match(reg));
这样出来的三个匹配也和你想要的有一点不同哦。因为正则的匹配过程就是,产生一个匹配,然后从这个匹配的下一个位置开始再匹配。正向预查可以不吃掉预查的串,但也仅此而已,想要象你要的回到最前面然后产生一个不同的匹配得自己写代码实现。
var reg = /hello[^hello]*/ig;
var txt = "HelloNirvanahelloworldhello";
alert(txt.match(reg));
这样出来的三个匹配也和你想要的有一点不同哦。因为正则的匹配过程就是,产生一个匹配,然后从这个匹配的下一个位置开始再匹配。正向预查可以不吃掉预查的串,但也仅此而已,想要象你要的回到最前面然后产生一个不同的匹配得自己写代码实现。
解决方案 »
- js调用问题,求高手!
- js动态生成<select>,刷新时默认值设定不起作用,求教。
- 请帮我用js,写一个正则表达式;验证通过分就送上,,拜托。。。。。
- js 动态创建热区问题????
- mztreeview怎么实现动态加载?
- javascript有没有像ASP的Response.end的函数
- 有没有比我高点的高手在?
- 大家好谁知道像这网站里的树形菜单http://ymmz.nease.net/txsub/007.htm如果子菜单展开下面还有子菜单 那怎么做?谢谢
- 浏览器类型判断!!!马上结帐
- 如何分行显示textarea中的内容?
- 如何实现随下拉列表值的变化动态的使后面的radio和select下拉列表变为可用或不可用状态啊,请指教(兄弟就这么多分了)
- 这个可以传参数么?怎么获取参数?
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"串,而是不包含他们中的任意一个字母都会匹配.