如何在正则表达式中使用变量'object'?

时间:2014-04-01 18:09:32

标签: javascript gulp

vers={jquery:"2.1.1"};
...
.pipe(replace(/src=".*\/(.*).js"/g, 'src="js/$1.min.js?ver='+vers["$1"]+'"'))
...

为什么'... src =“js / jquery.min.js?ver = undefined”......'?以及如何正确地做出来?

2 个答案:

答案 0 :(得分:2)

它失败了,因为你实际传入的是$ 1,而不是字符串值。您需要使用函数

str.replace(YourRegExp, function(fullmatch, group1) { return 'src="js/' + group1 + '.min.js?ver='+vers[group1]+'"'; });

答案 1 :(得分:1)

表达式'src="js/$1.min.js?ver='+vers["$1"]+'"'传递到replace之前计算。因此,"$1"没有特殊含义,被视为该文字字符串。这意味着您正在尝试解析"$1"对象的vers,从而获得undefined

replace可以将函数作为其第二个参数,您可以使用该参数在运行时标识正确的vers值并根据需要替换它。