【发布时间】:2013-07-22 16:48:27
【问题描述】:
我正在寻找一种从 HTML 的字符串表示中去除 HTML cmets 的有效方法:
<div>
<!-- remove this -->
<ul>
<!-- and this -->
<li></li>
<li></li>
</ul>
</div>
我不想将字符串转换为实际的节点,内容原本是字符串,文件大小在 600mb 左右。
想知道是否有人以前遇到过这个问题并找到了一个有效且易于推广的解决方案。
【问题讨论】:
-
可以接受正则表达式吗?
-
绝对,首选
-
如果你没有像
<div title="z<!--this is not"><div title="a comment-->zz">这样的讨厌的标记(注意,这个 is 是有效的 HTML)那么正则表达式是可以接受的,因为 cmets 是不可嵌套的 (@987654323 @ 与<!-- <!-- --> -->“相同”。如果你这样做了,或者如果你担心你可能会,除其他原因外,请考虑使用更广泛的工具,例如解析器。 -
@acdcjunior
<!-- <!-- --> -->不与<!-- <!-- -->相同。第一个也解析为{ignored} -->,第二个解析为{ignored},其中{ignored}是HTML 解析器忽略的部分。这正是因为 cmets 不可嵌套。 -
@dtech 你是对的。我错误地表达了自己。我的意思是最初的部分是一样的。正如您所说,这意味着第二个
-->不会成为评论的一部分,因此正则表达式不必介意嵌套。 (编辑:现在没关系,我刚刚测试过,<!-- aa <!-- aa -->是 not valid HTML 正如我预测的那样。它产生错误 The document is not mappable to XML 1.0 due到评论中的两个连续连字符。在第二个--,意味着评论中的两个连字符只允许关闭它,没有别的。)
标签: javascript html string