2

HTML 注释可以使用内联 JavaScript 作为不支持 JS 代码的旧浏览器的特殊块。这些块如下所示:

<!--
some js code
//-->

我想将 JS 代码中的“真实”html 注释与此类注释区分开来。我写了这个正则表达式:

/<!--[^//]*?-->/g

因此,我想排除内部带有双斜杠的匹配项,但正则表达式将//其视为 and 的字符集,//不是整个双斜杠//。我能做些什么?

4

1 回答 1

5

如您所述,字符类仅匹配单个字符,因此您不能在此处使用它们。但是您可以使用否定的前瞻断言

/<!--(?:(?!//)[\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 -->
于 2012-07-06T07:01:31.493 回答