Javascript regexp:用f($1)替换$1

Javascript regexp:用f($1)替换$1,javascript,regex,string,idioms,Javascript,Regex,String,Idioms,我有一个正则表达式,比如/url.com\/([a-Za-z]+)\.html/,我想用新字符串$1:f($1)替换它,也就是说,用一个带有两个插值的常量字符串,捕获的字符串和捕获的字符串的函数 在JavaScript中实现这一点的最佳方法是什么?”这里的“最佳”是指(1)最不容易出错,(2)在空间和速度方面最有效,(3)最适合JavaScript,特别强调#3。替换方法可以 例如: str.replace(/regex/, function(match, group1, group2, ind

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


在JavaScript中实现这一点的最佳方法是什么?”这里的“最佳”是指(1)最不容易出错,(2)在空间和速度方面最有效,(3)最适合JavaScript,特别强调#3。

替换方法可以

例如:

str.replace(/regex/, function(match, group1, group2, index, original) { 
    return "new string " + group1 + ": " + f(group1);
});
为替换获取一个函数,如下所示:

var newStr = string.replace(/url.com\/([A-Za-z]+)\.html/, function(all, match) {
  return match + " something";
});

您可以随意转换结果,只需在回调中返回您希望匹配的内容即可

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

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