在JS中使用string.replace更新字符串

时间:2017-12-21 21:35:02

标签: javascript regex string

我有以下问题: 我有一个数组['cd','ef','kl']和一个字符串'ab(AA)ef(LL)ij(EX)'。我想分别用'cd','ef'和'ij'替换括号(AA)s之间的文本,使其成为'ab(cd)ef(gh)ij(kl)'。我编写了一个代码来查找括号中的文本

var s = 'ab(cd)ef(gh)ij(kl)';
var regExp = /\((.+?)\)/g;
var found = [], r;
while(r = regExp.exec(s)) {
    found.push(r[1]);
}

但接下来该怎么办? String.replace(re,found [x])将所有括号替换为第一个括号,如果我删除/ g标志,它只找到第一次出现(再次,应该如此)。有点卡在这里,你能给我一个提示吗?

1 个答案:

答案 0 :(得分:1)

您可以使用

\([^()]+\)

作为正则表达式并遍历数组:



var string = 'ab(AA)ef(LL)ij(EX)';
var arr = ['cd', 'ef', 'kl'];
cnt = 0;
console.log(string.replace(/\([^()]+\)/g, function() {
  return "(" + arr[cnt++] + ")";
}));




这会产生

ab(cd)ef(ef)ij(kl)