Javascript 字符串包含使用replace(Regex.lastMatch)后替换的值

Javascript 字符串包含使用replace(Regex.lastMatch)后替换的值,javascript,node.js,regex,replace,gulp,Javascript,Node.js,Regex,Replace,Gulp,我使用gulp从tempaltes生成HTML页面 模板如下所示: ... <script type="application/javascript"> {placeholder} </script> ... ... <script type="application/javascript"> MINIFIED JS CODE{placeholder}SOME MORE MINIFIED JS CODE </script> ... 但是,结果

我使用gulp从tempaltes生成HTML页面

模板如下所示:

...
<script type="application/javascript">
{placeholder}
</script>
...
...
<script type="application/javascript">
 MINIFIED JS CODE{placeholder}SOME MORE MINIFIED JS CODE
</script>
...
但是,结果如下所示:

...
<script type="application/javascript">
{placeholder}
</script>
...
...
<script type="application/javascript">
 MINIFIED JS CODE{placeholder}SOME MORE MINIFIED JS CODE
</script>
...

怎么可能是替换工作,{占位符}仍然出现在中间?

经过几个小时的调试,我发现被缩小的代码包含了字符$&.

这种组合触发了一个名为

它用缩小的JS代码替换了{placeholder},然后用值{placeholder}替换了$

是的

我最终将实现更改为

function renderTemplate(minifiedJS) {
  var template = fs.readFileSync('template.html', 'utf-8');
  var splitTemplate = template.split('{placeholder}'); 
  return splitTemplate[0] + minifiedJS + splitTemplate[1]; // this is ok because the placeholder appears exactly once.
}

第3行缺少一个结束报价