0

我正在使用 Grunt,grunt-string-replace以便在部署期间将所有出现的开发环境 URL 替换为生产环境 URL。我有我的devRootstageRoot保存为变量,我想用它们来应用替换。

我尝试了两种不同的方法:

  1. 使用 RegExp 作为模式效果很好,除了我不能在 RegExp 中使用字符串插值,所以我不能动态地将我添加devRoot到模式中。所以我尝试将 RegExp 直接分配给对象属性,甚至分配一个返回 RegExp 的函数,但这根本不起作用。

  2. 由于我的替换相当简单,我放弃了第一种方法,并决定使用字符串替换,如下所示:

    'string-replace': {
         rootUrl: {
              options: {
                  replacements: [{
                      pattern: '<%= devRoot %>',
                      replacement: '<%= stageRoot %>'
                  }]
              }
          }
    }
    

这有效,但只替换了我的第一次出现的 pattern。所以我的问题是:有没有办法用子字符串进行全局不区分大小写的替换?类似于 RegExpgi选项的作用。

或者:我如何将插入的 RegExp 传递给这个对象属性

4

2 回答 2

1

如果通过插值是指将变量值连接到正则表达式中,那么您可以使用 RegEx 的构造函数语法来完成。即这两个是等价的:

/abc/gi

new RegExp('abc', 'gi');

但是由于第二个接收到一个字符串,您可以将它与一个 var 连接起来,就像您将一个普通字符串一样(毕竟它是一个普通字符串):

new RegExp('abc' + devRoot, 'gi');
于 2013-10-21T03:10:18.857 回答
0

我不确定它是否有任何帮助,但我可以使用 Reg Exp 模式替换单词的所有实例而不使用该函数。我只是使用 /<%= devRoot %>/ig 并且效果很好!

于 2014-04-18T05:03:00.580 回答