javascript正则表达式匹配所有自定义注释掉的部分,但不匹配其他文本

时间:2014-12-18 19:20:04

标签: javascript regex

说我有一个像这样的HTML文档:

<!--FOO-->
  some text
<!--BAR-->

some other text

<!--FOO-->
some more text
<!--BAR-->

如何编写与

两种情况相匹配的javascript正则表达式
<!--FOO-->anytext<!--BAR--> 

但不是介于两者之间的文本(在这种情况下为“其他一些文字”)。

我认为可行的正则表达式是

/<!--FOO-->(.|\n)*<!--BAR-->/  

但它也会捕捉到“其他一些文字”。

1 个答案:

答案 0 :(得分:2)

您需要非贪婪的运算符?,如下所示:

/<!--FOO-->(.|\n)*?<!--BAR-->/

Demo

稍微好一点的版本就是这样,让你实际捕捉评论之间的文字:

/<!--FOO-->((?:\n|.)*?)<!--BAR-->/

Demo

也就是说,使用正则表达式解析HTML很少结束...... See here for the classic explanation of the problem。你最好使用一个库,除非你的解析仅限于你问题中非常简单的情况。