Javascript Regex - 捕获除C风格注释之外的所有内容

时间:2010-02-09 10:04:56

标签: javascript regex

问题:我正在尝试在代码标记的内容中设置某些关键字(例如“功能”)的样式,但不包括那些内容中出现的C风格注释中的关键字。 解决方案:我认为代码标记的innerHTML字符串与正则表达式模式的匹配可以排除C风格的注释...

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

C风格的注释可以嵌套,因此不适合正则表达式。

匹配未经证实的C风格评论很简单:

/\*.*?\*/

允许一级嵌套导致:

/\*(?:(?!\*/|/\*).)*+(?:/\*(?:(?!\*/|/\*).)*+\*/(?:(?!\*/|/\*).)*+)*+.*?\*/

(取自RegexBuddy的图书馆)。试着想象如果你允许更多的话会发生什么。

我理解你的问题是“正则表达式是否有可能匹配C风格注释之外的文本块?” - 这比这更复杂。想象一下像"This is used to start a C comment: /*"这样的字符串。此外,如果你仍然想尝试这个,你需要一个JavaScript不支持的lookbehind。