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;
}