获取匹配和不匹配的数组

时间:2017-02-17 21:11:21

标签: javascript arrays regex

我想要做的是将一个字符串拆分成多个连续子串的数组,在给定正则表达式的匹配和非匹配之间交替。

像这样:

[nonmatch, match, nonmatch, match...]

例如,使用正确的正则表达式(实际表达式在这里并不重要),

"I [went to the doctor] today to [eat some] food"

可能会成为:

["I ", "[went to the doctor]", " today to ", "[eat some]", " food"]

我需要这样做,因为我需要暂时取出字符串的某些部分,对字符串的其余部分执行一些操作,然后将之前的部分插回到它们将字符串重新整齐的位置(通过简单将整个数组合成一个字符串)。

我从搜索中找到的所有人都想要摆脱一些字符串(例如上面例子中的[])或者加入一些非匹配和匹配,例如:

["I ", "[went to the doctor] today to ", "[eat some] food"]

1 个答案:

答案 0 :(得分:7)

您可以使用split,将其传递给具有捕获组的正则表达式(即括号)。然后,此分隔部分也将包含在结果数组中:



var s = "I [went to the doctor] today to [eat some] food"
var result = s.split(/(\[.*?\])/);
console.log(result); 




匹配将始终位于结果数组的奇数索引处。