我有以下字符串:
[{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/