javascript正则表达式匹配2个HTML评论标记之间的所有内容

时间:2015-11-14 18:36:00

标签: javascript regex

我必须创建一个正则表达式,它将匹配2个html特定注释标记之间的任何内容(包括换行符)。以下是一些html的示例:

<!-- build-remove-start -->
<!-- bower:js -->
<script src="../bower_components/jquery/dist/jquery.js"></script>
<!-- endbower -->
<!-- build-remove-end -->

<!-- inject:vendor:js -->
<!-- endinject -->

我想匹配<!-- build-remove-start --><!-- build-remove-end -->之间的所有内容,不包括评论标记(我的意思是不删除评论标记,只删除内部的内容)。
我试过了:
<!-- build-remove-start -->[\s\S]<!-- build-remove-end -->
但它不起作用。 这是测试正则表达式的链接:
https://regex101.com/r/rV0qG2/2

1 个答案:

答案 0 :(得分:3)

您需要在*之后添加[\s\S]

/<!-- build-remove-start -->([\s\S]*?)<!-- build-remove-end -->/gmi

另外,我建议在?之后添加*,这样会使其变得懒惰。通过这种方式,您可以使用下面的示例,而this won't be removed行将匹配。

<!-- build-remove-start -->
//remove this
<!-- build-remove-end -->

This won't be removed

<!-- build-remove-start -->
//Remove this
<!-- build-remove-end -->