搜索并替换并记住字符串在正则表达式中被替换的单词

时间:2014-04-29 13:54:21

标签: javascript regex string replace

如何在javascript

中应用regex替换时找到替换的子字符串
Main string : abcSSSdeSSfghEEEijSSSkEEElmSSSnSSSEEEopEEE

我想替换所有以' SSS'开头的最小长度子串。并以EEE'结束。与。*

应用所需的功能后,我应该修改字符串

abc.*ij.*lmSSSn.*opEEE

以及替换字符串的数组如下:

[ SSSdeSSfghEEE,  SSSkEEE, SSSEEE ]

如何有效地实现上述期望的功能

2 个答案:

答案 0 :(得分:3)

将函数作为第二个参数传递给String.replace:

var replacements = [];

var newString = oldString.replace(/*regex pattern here*/, function(match){
  replacements.push(match);
  return 'some replacement string';
});

答案 1 :(得分:1)

Javascript的replace让我们传递一个函数,因此我们可以收集匹配的值:

var arr = []
string.replace(/SSS.*?EEE/g, function (match) {
  arr.push(match)
  return '.*'
})

模式中的.*?确保它与最小长度字符串匹配,并且不会尝试匹配从第一个SSS到最后一个EEE