我想要做的是将一个字符串拆分成多个连续子串的数组,在给定正则表达式的匹配和非匹配之间交替。
像这样:
[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"]
答案 0 :(得分:7)
您可以使用split
,将其传递给具有捕获组的正则表达式(即括号)。然后,此分隔部分也将包含在结果数组中:
var s = "I [went to the doctor] today to [eat some] food"
var result = s.split(/(\[.*?\])/);
console.log(result);

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