JavaScript RegExp替换HTML注释

时间:2014-07-15 22:48:45

标签: javascript html regex

我正在寻找一种方法来替换像浏览器这样的字符串中的所有html注释。 (多线和未闭合)

例如,我实际上使用/(<\!--[\s\S]*?-->)/gim但是如果html注释未公开,则不会替换它。

通常情况下,如果注释标记未关闭,则注释标记会在打开标记后获取所有内容...

有没有办法让regexp(或任何其他正则表达式)适应这些东西? (在JavaScript中)

3 个答案:

答案 0 :(得分:1)

这会将所有评论标记为没有结束标记的评论:<!-- some text -->

<!--[\s\S]*?(?:-->|$)

这会将所有评论标记为没有结束标记的评论:<!-- some text //-->

<!--[\s\S]*?(?://-->|$)

这将标记从文件的第一个<!--到最后的所有内容

<!--[\s\S]*?(?:$)     and regex set to `^$ don't match at line breaks`

这将标记从第一行<!--到行尾

的所有内容
<!--.*

答案 1 :(得分:0)

我必须同意使用像这样的正则表达式并不是一种好的做法,你不应该这样做...... here's why

Buuuut,为了更好地理解正则表达式,你可以像这样做一些可选的东西:

/(<\!--[\s\S]*?(?:-->)?)/gim

  1. 我将-->括在括号中将它们组合在一起

  2. 我在该群组之后添加?以使其成为可选

  3. (不是必需的)我将?:放在组内以防止正则表达式引擎保存后退引用...这是一个性能上的细微差别。

答案 2 :(得分:0)

感谢@ Andie2302的帮助。

这个正则表达式/<!--[\s\S]*?(?:-->|$)/gi找到了工作。

请勿使用标记m