如何捕获正则表达式中的n个组,以便我可以在js

时间:2016-09-02 10:07:07

标签: 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替换为' $ 1,$ 2,以及'无论' + $ 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))

1 个答案:

答案 0 :(得分: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]"