首页 > 解决方案 > 如何使用正则表达式匹配javascript中的所有重复子字符串?

问题描述

如何使用正则表达式匹配javascript中的所有重复子字符串?

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

+不管用:

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

标签: javascriptregex

解决方案


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

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

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

代码示例:

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]);
}

我们通过 得到第 1 组的结果m[1]
用于.push(m[1]);将其添加到数组中。


推荐阅读