首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在javascript中使用regexp匹配所有重复的子串?

如何在javascript中使用regexp匹配所有重复的子串?
EN

Stack Overflow用户
提问于 2018-06-05 05:59:57
回答 2查看 109关注 0票数 0

如何在javascript中使用regexp匹配所有重复的子串?

例如:通过"abccdddcdcdcdcd123“获取[ "cd","cd","cdcd","cdcdcd", "cdcdcdcd" ]

+不工作:

"abccdddcdcdcdcd123".match(/(cd)+/g)
Array [ "cd", "cdcdcdcd" ]
EN

回答 2

Stack Overflow用户

发布于 2018-06-05 08:53:00

我想你也可以这样做。

将捕获组放在一个先行断言中。

如果当前正则表达式的位置没有改变,那么大多数引擎都会对其进行调整

最后一场比赛。但不是JS,您必须通过递增lastIndex来手动完成。

可读的正则表达式

 (?=
      (                             # (1 start)
           (?: cd )+
      )                             # (1 end)
 )

var re = /(?=((?:cd)+))/g;
var str = "abccdddcdcdcdcd123"; 
var m;
while (m = re.exec(str)) {
  console.log( m[1] );
  ++re.lastIndex;
 }

票数 0
EN

Stack Overflow用户

发布于 2018-06-05 12:52:18

我认为像这样的重叠匹配问题的常见解决方案应该是:

/(?=((cd)+))cd

在前视中一次或多次匹配组中的内部模式,同时将carret一次向前移动两个字符。(我们也可以移动两个点..)。

代码示例:

var re = /(?=((cd)+))cd/g;
var str = "abccdddcdcdcdcd123";
var m; //var arr = new Array();
while (m = re.exec(str)) {
  //arr.push(m[1]);
  console.log(m[1]);
}

我们通过m[1]从组1获得结果。

使用.push(m[1]);将其添加到数组中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50689353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档