Javascript 正则表达式删除注释和结尾

Javascript 正则表达式删除注释和结尾,javascript,regex,Javascript,Regex,我正在尝试创建一个正则表达式,可以使用它从字符串中删除任何结束注释语法 例如,如果我有: /*帮助::这是我的注释*/应返回这是我的注释或应返回这是我的其他注释。理想情况下,我希望针对所有需要结束注释标记的主要编程语言 以下是我到目前为止的情况: function RemoveEndingTags(comment){ return comment.split('help::')[1].replace("*/", "").replace("-->", ""); //my ugly s

我正在尝试创建一个正则表达式,可以使用它从字符串中删除任何结束注释语法

例如,如果我有:

/*帮助::这是我的注释*/
应返回
这是我的注释
应返回
这是我的其他注释
。理想情况下,我希望针对所有需要结束注释标记的主要编程语言

以下是我到目前为止的情况:

function RemoveEndingTags(comment){
    return comment.split('help::')[1].replace("*/", "").replace("-->", ""); //my ugly solution
}
HTML标记示例如下:

<!-- help:: This is a comment -->
<div>Hello World</div>

你好,世界

因此字符串应该是
help::这是一条注释-->

您可以根据需要添加更多语言:

help::.*?\s(.*)(?:.*?\s\*\/|.*?\s\-->)
示例:

var str='';
var newstr=str.replace(/,“$1”);
console.log(newstr);//评论

请参见

这应该支持多种语言,包括bash,而bash不支持
\s

help::[\r\n\t\f ]*(.*?)[\r\n\t\f ]*?(?:\*\/|-->)
您还可以使用来防止任何不必要的选择,从而使其更易于使用:

help::[\r\n\t\f ]*(.*?)(?=[\r\n\t\f ]*?\*\/|[\r\n\t\f ]*?-->)
您可以将其用作时髦的
.replace
,但它可能会导致古怪的行为:

/\/\*[\r\n\t\f ]*help::|<!--[\r\n\t\f ]*help::|[\r\n\t\f ]\*\/|[\r\n\t\f ]*-->/g
[\r\n\t\f]
解决方案2(几乎支持所有功能)
var regExArray=[['\/\\\*帮助::','*/'],['']]
var regexMatchers=regExArray.map(函数(项){
返回新的RegExp('^'+项[0]+'(.*')+项[1]+'$)})
函数RemoveEndingTagsNew(注释){
var新出现;
forEach(函数(regEx,索引){
if(正则表达式测试(注释)){
newComment=comment.replace(/.*帮助::/,“”)。replace(regExArray[index][1],“”)
}
});
返回新成员| |评论;
}
它的版本较长,但如果开始和结束注释标记不匹配,则不会删除注释


演示:

当你说目标主要编程语言时,你的意思是正则表达式应该可以在这些语言中使用,还是仅仅想捕获主要编程语言的注释?因此,如果我想在字符串中去掉它,我会使用
comment.replace(/help:[\r\n\t\f]*(.*)(=[\r\n\t\f]*?\*/\*.[\r\n\t\f]*?-->)/, 1);
您可以使用类似于
var commentText=comment.match(/help::[\r\n\t\f]*(.*)?(=[\r\n\t\f]*?\*\*\/|[\r\n\t\f]*?-->/)
@Luca您将使用
.match
comment.match(/help::[\r\n\t\f]*(.*)(=[\r\n\t\f]*?\*\*/\124;[\ r\n\t\f]*?-->)/)
@Luca您也可以使用
注释。替换(/\/\*[\r\n\t\f]*帮助::/g')
/\/\*[\r\n\t\f ]*help::|<!--[\r\n\t\f ]*help::|[\r\n\t\f ]\*\/|[\r\n\t\f ]*-->/g
help::            Matches the text "help::"
[\r\n\t\f ]*      Matches any whitespace character 0-unlimited times
(.*?)             Captures the text
[\r\n\t\f ]*?     Matches all whitespace
(?:               Start of non-capture group
   \*\/           Matches "*/"
|                 OR
   -->            Matches "-->"
)                 End non capture group
\r Carriage return
\n Newline
\t Tab
\f Formfeed
   Space
help::             Matches "help::"
[\r\n\t\f ]*       Matches all whitespace 0-unlimited
(.*?)              Captures all text until...
(?=                Start positive lookahead
    [\r\n\t\f ]*?  Match whitespace 0-unlimited
    \*\/           Matches "*/"
|                  OR
    [\r\n\t\f ]*?  Match whitespace 0-unlimited
    -->            Matches "-->"
)
    var regExArray = [['\\/\\* help::','*/'],['<!-- help::','-->']]
var regexMatchers =  regExArray.map(function(item){
                        return new RegExp('^'+item[0]+'(.*)'+item[1]+'$')})

function RemoveEndingTagsNew(comment){
    var newComment;
    regexMatchers.forEach(function(regEx,index){
        if(regEx.test(comment)){
        newComment=comment.replace(/.* help::/,"").replace(regExArray[index][1],"")
       }
    });
    return newComment || comment;

}