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



>假设我有一个这样的html文档:

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

如何编写与两种情况匹配的 JavaScript 正则表达式

<!--FOO-->anytext<!--BAR--> 

但不是中间的文本(在这种情况下是"其他一些文本"(。

我认为会起作用的正则表达式是

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

但它也抓住了"其他一些文本"。

你需要非贪婪运算符?,像这样:

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

演示

一个稍微好一点的版本是这样的,让你实际捕获注释之间的文本:

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

演示

也就是说,使用正则表达式解析 HTML 很少有好结果......有关该问题的经典解释,请参阅此处。你最好使用库,除非你的解析仅限于你的问题中非常简单的情况。

最新更新