【发布时间】:2015-06-19 00:27:26
【问题描述】:
我正在尝试使用 grunt-string-replace 替换 2 个 HTML cmets 之间的文件内容。我想出的东西在单行上运行良好,但在我的一生中,我无法让它与多行匹配。
<!-- START COMMENT -->This matches<!-- END COMMENT -->
<!-- START COMMENT -->
this
doesn't
match
<!-- END COMMENT -->
我目前的正则表达式是
/<!-- START COMMENT -->[\s\S]*?<!-- END COMMENT -->/g
我知道用 [\s\S]*? 替换 .*?(适用于单行)将允许匹配多行,但我似乎无法让它工作。
有人有什么想法吗?
更新: 正如下面的评论者所提到的,我的正则表达式很好,这就是我用 grunt 实现它的方式
//This didn't work
.....
options:{
replacements: [
{
pattern: "/<!-- START COMMENT -->[\s\S]*?<!-- END COMMENT -->/g",
replacement: '<script src="'+minJSDestination+'"></script>'
}
]
}
.....
//This does work
.....
options:{
replacements: [
{
pattern: /<!-- START COMMENT -->([\s\S]*?)<!-- END COMMENT -->/ig,
replacement: '<script src="'+minJSDestination+'"></script>'
}
]
}
.....
【问题讨论】:
-
您是否尝试使用“m”修饰符? (用你的“g”一个。)
-
regex101.com/r/tM0oB5/1 似乎工作正常
-
@Fraser 您的代码有效。您能否显示您实际使用此正则表达式的代码?
-
这是我测试的地方:goo.gl/zkb5Ur 我会用我的解决方案更新帖子
-
感谢@vihan1086 的帮助,我已经更新了我的解决方案
标签: javascript regex gruntjs grunt-string-replace