因此,如果我想在排除评论系统之间抓取文本:
/*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*/
答案 0 :(得分:0)
使用正则表达式无法可靠地执行此操作。您应该使用一个删除注释的minifer(如uglify)或一个JS解析器(如esprima)。话虽如此,以下内容可能会或多或少地起作用:
/\/\*[^]*?\*\/|\/\/.*$/gm
^^^^^^^^^^^^^ CAPTURE /* */ COMMENTS
^^^^^^^ CAPTURE // COMMENTS
请注意订单。我们需要首先查找/* */
样式注释,否则我们可能会在//
内选择/* */
个序列。
在此处使用[^]
来获取任何字符,包括换行符。其他人喜欢使用[\s\S]
。
但是,这不会正确处理字符串中的注释。
答案 1 :(得分:-1)
使用此正则表达式匹配代码中的所有注释:
/(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*)/igm
然后将您的评论存储在单独的变量中。 然后显示要显示所有注释的变量。