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”......'?以及如何正确地做出来?
答案 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
值并根据需要替换它。