【问题标题】:JavaScript create regex programmaticallyJavaScript 以编程方式创建正则表达式
【发布时间】:2011-12-04 18:12:37
【问题描述】:

我知道我可以像这样创建一个 javascript 替换:

str = str.replace(/mytarget/g, 'some value');

这将替换所有出现的文字mytarget。 但是,我想在正则表达式替换中使用大量单词/短语,并且由于正则表达式只是语言元素(在声明时它们没有包装在字符串中),我找不到以编程方式声明正则表达式的方法除非我对它们进行硬编码。所以如果我有:

var arr=['word', 'another', 'hello'];

我要生产:

str = str.replace(/word/g, 'some value');

str = str.replace(/another/g, 'some value');

str = str.replace(/hello/g, 'some value');

请发布一个我可以使用正则表达式的示例,因为我将在正则表达式中添加更多表达式,例如空格等,所以我需要正则表达式的方式。最后,请不要使用eval,我相信有更好的方法。

【问题讨论】:

  • 你为什么使用正则表达式?只需做一个简单的string replacement
  • 而替换模式只是一个正则表达式,原因我在上面已经解释过了。

标签: javascript regex replace


【解决方案1】:

您需要为此调用 RegExp 构造函数。示例:

['word', 'another', 'hello'].forEach(function( word ) {
    var myExp = new RegExp(word, 'g');
    str = str.replace(myExp, 'some value');
});

构造函数的第一个参数是一个字符串,它可以接受任何你想在// 之间包装的东西。第二个参数也是字符串,可以传递gi等修饰符。

【讨论】:

    【解决方案2】:

    您可以像这样动态构建 RegEx -

    var word = 'hello';
    var re =  new RegExp("\\b" + word + "\\b","g");
    

    请记住,您需要使用 \\ 转义任何 \ 字符

    【讨论】:

      【解决方案3】:
      for( i in arr )
      {
          str = str.replace(new RegExp("\\"+arr[i],"g"), "some value")
      }
      

      【讨论】:

        【解决方案4】:

        如果您正在动态生成 reg-exp,则可以使用 RegExp 对象

        var a = new RegExp("word")
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-09
          • 2012-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多