在JS中用string.replace更新字符串[关闭]

问题描述 投票:-2回答:1

我有以下问题:我有一个数组['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标志,它只找到第一次出现(再次,应该如此)。有点卡在这里,你能给我一个提示吗?

javascript regex string
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.