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