获取传统注释语法之间的文本

时间:2016-01-08 04:08:56

标签: javascript regex

因此,如果我想在排除评论系统之间抓取文本:

/*this is a comment*/
//this is too
//and so is this...
This, however, isn't.

输出将是

This, however, isn't.

我怎样才能用javascript做到这一点?我打算抓住它的正则表达式,但我不确定如何处理以空格结尾的评论...

任何帮助都将不胜感激。

编辑:也许我不清楚。

我有一个上面的文本数组。我想摆脱评论中没有的任何内容,我想要显示评论。所以:

/*This is a longggg
  comment that crosses several lines
  etc etc etc*/
this is plain text. i want to ignore this //however, this is another comment
/*one more comment here*/

这将输出为:

 /*This is a longggg
  comment that crosses several lines
  etc etc etc*/
 //however, this is another comment
 /*one more comment here*/

2 个答案:

答案 0 :(得分:0)

使用正则表达式无法可靠地执行此操作。您应该使用一个删除注释的minifer(如uglify)或一个JS解析器(如esprima)。话虽如此,以下内容可能会或多或少地起作用:

/\/\*[^]*?\*\/|\/\/.*$/gm
 ^^^^^^^^^^^^^              CAPTURE /* */ COMMENTS
              ^^^^^^^       CAPTURE // COMMENTS

请注意订单。我们需要首先查找/* */样式注释,否则我们可能会在//内选择/* */个序列。

在此处使用[^]来获取任何字符,包括换行符。其他人喜欢使用[\s\S]

但是,这不会正确处理字符串中的注释。

答案 1 :(得分:-1)

使用此正则表达式匹配代码中的所有注释:

/(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*)/igm

然后将您的评论存储在单独的变量中。 然后显示要显示所有注释的变量。