javascript - 如何在正则表达式中捕获n个组,以便我可以在js中替换它们

标签 javascript regex replace

我有以下字符串:

[{par1}, {par2}, ..., {parN}]

我使用以下正则表达式捕获此内容:

(\{\S*\})

这工作正常,并按组捕获我的参数:$1 = par1,$2 = par2...等

我的问题是,我想在 javascript 中对所有这些组进行一些操作。 我知道如何为 1 组做这件事。

str.replace(new RegExp((\{\S*\}),g),'whatever'+$1) //Probably need to add more escape characters

我的问题是如何将 $1 替换为 'whatever+'$1、$2 替换为 'whatever'+$2... 等等

[{par1},{par2}] ==> [mypar1,mypar2]

编辑

解释我想用参数做的更详细的事情:

从 [{par1},{par2}] 中,我需要提取 par1 和 par2,这样我就可以用它们调用一个函数,这将返回不同的值:

function translate(par) {
  //return different things for every parameter
}
//so finally will be like: 
str.replace(new RegExp((\{\S*\}),g),translate($1))

最佳答案

使用回调函数作为String.replace函数的第二个参数:

var str = '[{par1}, {par2}, ..., {parN}]',
    prefix = 'whatever',
    replaced = str.replace(/\{(\S+)\}/g, function (p0, p1) {
        // ... some other logic
        return prefix + p1;
    });

console.log(replaced);  // "[whateverpar1, whateverpar2, ..., whateverparN]"

关于javascript - 如何在正则表达式中捕获n个组,以便我可以在js中替换它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39289789/

相关文章:

javascript - 如何从 Chart.js 中删除所有无用的值?

Javascript 用颜色突出显示所有排除的字符

javascript - 如何显示图像的 HTML

java - 正则表达式限制重复类子字符

c++ - 在 pcre++ 中命名捕获的子串

javascript - 字符串中允许有空格,但不能在第一个或最后一个位置

java - 如何以用户友好的文本以编程方式替换 Spring 的 NumberFormatException?

javascript - node.js 替换正则表达式特殊字符

javascript - 如何在 <canvas> 中正确设置动画?

javascript - 找到某个类并返回它