HTML 注释可以使用内联 JavaScript 作为不支持 JS 代码的旧浏览器的特殊块。这些块如下所示:
<!--
some js code
//-->
我想将 JS 代码中的“真实”html 注释与此类注释区分开来。我写了这个正则表达式:
/<!--[^//]*?-->/g
因此,我想排除内部带有双斜杠的匹配项,但正则表达式将//
其视为 and 的字符集,/
而/
不是整个双斜杠//
。我能做些什么?
如您所述,字符类仅匹配单个字符,因此您不能在此处使用它们。但是您可以使用否定的前瞻断言:
/<!--(?:(?!//)[\s\S])*-->/g
(假设这是 JavaScript)。
解释:
<!-- # Match <!--
(?: # Try to match...
(?!//) # (asserting that there is no // ahead)
[\s\S] # any character (including newlines)
)* # ...any number of times.
--> # Match -->