RegEx:替换评论之间的内容

时间:2015-02-26 19:56:57

标签: javascript regex

我需要删除HTML内容。其中一些内容位于评论之间,如下所示:

<div>Some content</div>
<!-- Begin: Modal View -->
    <div class="foo">
        <div> Modal View</div>
        <div>...</div>
    </div>
<!-- End: Modal view -->
<div>Some other content</div>

我想选择以正则表达式开头和结尾的内容 - 包括注释。删除后,输出将为:

<div>Some content</div>
<div>Some other content</div>

我需要的只是regEx。无需说明如何获取HTML。假设HTML是带有.replaceMethod的字符串对象。

谢谢!

3 个答案:

答案 0 :(得分:0)

如果您知道评论的内容,那么应该这样做。

s/<!-- Begin: Modal View -->.*?<!-- End: Modal view -->//sg

注意询问标记。这场比赛非贪婪。

否则比赛将从第一个公开评论继续到最后一个结束评论,从中间剥离全部。

答案 1 :(得分:-1)

使用以下正则表达式:

/<!--\s*begin:\s*(.+)\s*-->[\s\S]*<!--\s*end:\s*\1\s*-->/gi

这将从({包括)<!-- begin: label -->到(包括)<!-- end: label -->中选择所有内容。

要删除这些事件,只需执行以下操作:

var pattern =     /<!--\s*begin:\s*(.+)\s*-->[\s\S]*<!--\s*end:\s*\1\s*-->/gi;
var input= ".....";
var stripped = input.replace(pattern, "");

答案 2 :(得分:-1)

您可以解析HTML以查找评论。为此,请参阅:http://www.bennadel.com/blog/2607-finding-html-comment-nodes-in-the-dom-using-treewalker.htm

否则,如果您没有寻找完全可靠且可维护的解决方案:

&#13;
&#13;
var my_html= document.querySelector("#my_html");

my_html.innerHTML= my_html.innerHTML.replace(/<\!--\s*Begin\:(.*?)\s*-->[\s\S]*<\!--\s*End\:\1\s*-->/gmi,"")
&#13;
<div id="my_html"> 
  
  <div>Some content</div>
<!-- Begin: Modal View -->
    <div class="foo">
        <div> Modal View</div>
        <div>...</div>
    </div>
<!-- End: Modal view -->
<div>Some other content</div>

</div>
&#13;
&#13;
&#13;