我正在寻找一种方法来替换像浏览器这样的字符串中的所有html注释。 (多线和未闭合)
例如,我实际上使用/(<\!--[\s\S]*?-->)/gim
但是如果html注释未公开,则不会替换它。
通常情况下,如果注释标记未关闭,则注释标记会在打开标记后获取所有内容...
有没有办法让regexp(或任何其他正则表达式)适应这些东西? (在JavaScript中)
答案 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
我将-->
括在括号中将它们组合在一起
我在该群组之后添加?
以使其成为可选
(不是必需的)我将?:
放在组内以防止正则表达式引擎保存后退引用...这是一个性能上的细微差别。
答案 2 :(得分:0)
感谢@ Andie2302的帮助。
这个正则表达式/<!--[\s\S]*?(?:-->|$)/gi
找到了工作。
请勿使用标记m
!