如何在Javascript中从字符串中删除HTML注释

3

所以,我有一个JavaScript字符串,实际上是一些HTML标记赋给它的。

现在,我想从字符串中删除所有HTML注释及其内容,即所有开头注释标签和结束注释标签的出现;以及其中的注释内容。

因此,我想要删除所有的出现:

<!-- some comment -->

请注意,我希望“一些注释”也被删除...
有人能帮我用正则表达式替换这个吗...
谢谢。

也许将其转换为DOM节点?然后循环遍历节点元素,并删除所有类型与注释匹配的节点? - undefined
使用正则表达式,如果<!-- some comment -->在变量内容var text = '<!-- some comment -->';中呢? - undefined
2
text = text.replace(/<\!--.+?-->/sg,"")!不要忘记添加sg修饰符。 - undefined
或许这可以帮助你:链接 - undefined
我认为这个问题已经在这里得到了回答。 - undefined
3个回答

12

就像这样

var str = `<div></div>
<!-- some comment -->
<p></p>
<!-- some comment -->`
str = str.replace(/<\!--.*?-->/g, "");
console.log(str)


谢谢...这个正则表达式有效...我也尝试过在特定的注释上使用split和join,它也有效,但我更喜欢用正则表达式处理所有的注释...感谢,并且接受了它,因为它是原生JavaScript... - undefined

1
您可以使用这个正则表达式来替换 <!----> 之间的文本。
/(\<!--.*?\-->)/g

检查下面的代码片段。

var string = '<!-- some comment --><div><span>Some Content</span></div><!-- some other comment -->';

var reg = /(\<!--.*?\-->)/g;
string = string.replace(reg,"");

console.log(string);


你的代码中的i修饰符有什么用途?最好还可以添加s修饰符。 - undefined
为什么有额外的括号(在整个正则表达式的捕获组周围)? - undefined

1
我认为你想要的是这样的。

      var content = jQuery('body').html();
    alert(content.match(/<!--.*?-->/g));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
  <!-- some comment -->
</body>
</html>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接