JavaScript RegExp取代HTML注释

JavaScript RegExp replace HTML comments

本文关键字:注释 HTML 取代 RegExp JavaScript      更新时间:2023-09-26

我正在寻找一种方法来取代所有html评论从一个字符串像浏览器一样。(多行未闭)

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

通常情况下,如果注释标签不是关闭的,注释标签将获得打开标签之后的所有内容…

是否有一种方法来适应regexp(或任何其他regexp)做的东西?(在JavaScript中)

这将标记所有注释,包括没有结束标记的注释:<!-- some text -->

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

这将标记所有注释,包括没有结束标签的注释:<!-- some text //-->

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

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

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

这将标记从第一个<!--到行末的所有内容

<!--.*

我必须同意这样使用正则表达式不是一个好的实践,你不应该这样做…这是为什么。

但是,为了更好地理解正则表达式,您可以将其设置为可选的:

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

  1. 我将-->用括号括起来,将它们组合在一起

  2. 我在该组后面放了一个?,使其成为可选的

  3. (不需要)我把?:组内部,以保持regex引擎从保存回引用…

感谢@Andie2302的帮助。

此regexp /<!--['s'S]*?(?:-->|$)/gi工作查找。

不要使用标志m !