Javascript 在常规注释语法之间获取文本

Javascript 在常规注释语法之间获取文本,javascript,regex,Javascript,Regex,因此,如果我想在排除注释系统之间获取文本: /*this is a comment*/ //this is too //and so is this... This, however, isn't. 输出将是 This, however, isn't. 如何使用javascript实现这一点?我本想抓住它的正则表达式,但我不知道如何处理以空格结尾的评论 任何帮助都将不胜感激 编辑:也许我不清楚 我有一个上面的文本数组。我想去掉评论中没有的任何东西,并且我想按原样显示评论。因此: /*This

因此,如果我想在排除注释系统之间获取文本:

/*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*/

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

/(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*)/igm
然后将注释存储在单独的变量中。
然后在要显示所有注释的位置显示该变量。

使用regexp无法可靠地执行此操作。您应该使用剥离注释的minifer(如uglify)或JS解析器(如esprima)。话虽如此,以下方法可能或多或少奏效:

/\/\*[^]*?\*\/|\/\/.*$/gm
 ^^^^^^^^^^^^^              CAPTURE /* */ COMMENTS
              ^^^^^^^       CAPTURE // COMMENTS
注意顺序。我们需要首先查找
/***/
样式的注释,否则我们可能会在
/***/
中找到一个
/
序列

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


但是,这将无法正确处理字符串中类似注释的内容。

任何脚本或编程语言都不会读取注释,在运行代码时,注释会被忽略。所以你根本无法阅读注释。@AbdulJabbarWebBestow-我认为他只是想使用Javascript作为解析器,将注释作为字符串。你到底想做什么?如果你想要一个正则表达式,下面是它的用法。它相当复杂,因为它必须排除/*…*/在双引号内,等等。而不是regexp,我建议要么使用像Esprima这样的JS解析器,要么使用像uglify这样的minifier。这个regexp似乎是无效语法。例如,在开始时您有
(/
),但是
/
在regexp中不是有效字符,除非进行转义。我还怀疑此regexp是否可以处理字符串中类似注释的结构,例如
var s=“/*Hello*/”;
。请提供指向此regexp的特定regexpal页面的链接。该页面显示第一个带红色下划线的正斜杠,当我将鼠标悬停在上面时,它会显示“unescaped forward slash”。当我在Chrome控制台中键入此regexp时,它会报告语法错误。似乎regexpal是“有用的”将前向斜杠视为转义斜杠,但其他环境将无法原谅。此regexp在
/*foo-bar//*/
上失败。您能给出URL吗?它在/*foo-bar//上工作正常*/