我有以下输入:
<script src="common/scripts/vendor.0.js"></script>
<script src="common/scripts/all.0.js"></script>
<script src="common/scripts/config.js"></script>
我试图编写一个Grunt任务来匹配/替换JavaScript正则表达式,如下所示:
{
match: /<(script.*?src=)"(.*?)"(.*?)>/g,
replacement: '<$1"//<%= config.cdn.preview[0] %>/$2"$3>'
}
我得到了这个输出:
<script src="//cdn.domain.com/common/scripts/vendor.0.js"></script>
<script src="//cdn.domain.com/common/scripts/all.0.js"></script>
<script src="//cdn.domain.com/common/scripts/config.js"></script>
到目前为止一切都那么好......唯一的事情是......我不想做匹配/用config.js
文件替换该行,只有其他两个。我希望输出为:
<script src="//cdn.domain.com/common/scripts/vendor.0.js"></script>
<script src="//cdn.domain.com/common/scripts/all.0.js"></script>
<script src="common/scripts/config.js"></script>
我尝试过在SO和Google上找到无数的东西,但似乎无法为此找到解决方案。
答案 0 :(得分:2)
让我们假设你要用`config.js&#39;排除这一行。这就是你能做的:
搜索:
<script src="common(?![\w/]+config\.js)
替换:
<script src="//cdn.domain.common
参见demo(查看底部的替换部分)
您的确切搜索和替换条件可能有所不同,但我确定您可以对其进行调整。
它是如何运作的?
<script src="common
查找以common (?![\w/]+config\.js)
否定前瞻声明紧接着的内容不是一些单词字符和斜杠后跟config.js