Javascript正则表达式:用f($ 1)替换$ 1

Cha*_*les 4 javascript regex string idioms

比方说/url.com\/([A-Za-z]+)\.html/,我有一个正则表达式,我想new string $1: f($1)用一个带有两个插值的常量字符串替换它,捕获的字符串和捕获的字符串的函数.

在JavaScript中执行此操作的最佳方法是什么?这里的"最佳"意味着(1)最不容易出错,(2)在空间和速度方面最有效,以及(3)大多数惯用于JavaScript的特殊组合,特别强调#3.

SLa*_*aks 8

replace方法可以将函数作为替换参数.

例如:

str.replace(/regex/, function(match, group1, group2, index, original) { 
    return "new string " + group1 + ": " + f(group1);
});
Run Code Online (Sandbox Code Playgroud)


dec*_*eze 5

使用时String.replace,您可以提供回调函数作为替换参数而不是字符串,并创建您自己的非常自定义的返回值.

'foo'.replace(/bar/, function (str, p1, p2) {
    return /* some custom string */;
});
Run Code Online (Sandbox Code Playgroud)