【问题标题】:Javascript regexp: replacing $1 with f($1)Javascript 正则表达式:用 f($1) 替换 $1
【发布时间】:2011-05-09 23:37:39
【问题描述】:

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

在 JavaScript 中执行此操作的最佳方法是什么?这里的“最佳”是指 (1) 最不容易出错,(2) 在空间和速度方面最高效,以及 (3) 最符合 JavaScript 的习惯,特别强调 #3。

【问题讨论】:

    标签: javascript regex string idioms


    【解决方案1】:

    replace方法可以take a function as the replacement parameter

    例如:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        .replace() 接受一个替换函数,如下所示:

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

        您可以随心所欲地转换结果,只需在回调中返回您希望匹配的任何内容。 You can test it out here.

        【讨论】:

          猜你喜欢
          • 2017-08-30
          • 2013-11-03
          • 2016-11-12
          • 1970-01-01
          • 1970-01-01
          • 2014-01-26
          • 2010-11-12
          • 2016-09-23
          相关资源
          最近更新 更多