首页 > 解决方案 > 在不使用正则表达式的情况下剪切一段 HTML?

问题描述

我正在尝试从某些 HTML 中删除一个部分。这是我正在使用的示例(某些特定的 div id 可能会更改,但想法就在这里):

Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir="ltr">---------- Forwarded message ---------<br>data data data<br></div><br><br>
<div id="itemID" style="margin:0px"><div style="margin:0px">
<html i want to keep etc>

我想改变它,所以它看起来像:

<div id="itemID" style="margin:0px"><div style="margin:0px">
<html i want to keep etc>

作为另一个例子,这个 HTML:

Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir="headerline">---------- Forwarded message ---------<br>data data data<br></div><br><br>
<div id="itemID2" style="margin:10px"><div style="margin:10px">
<html i want to keep etc>

应该变成这样:

<div id="itemID2" style="margin:10px"><div style="margin:10px">
<html i want to keep etc>

换句话说,Forwarded message在第一行或第二行中查找,如果找到,则删除直到并包括该行的每一行。现在工作的 RegEx 看起来像这样:

var HTMLbodynew = HTMLbody.replace(/\n.+Forwarded Message.+\n/,"");

但是,正如臭名昭著的 Stackoverflow帖子中所述,我不应该使用正则表达式来解析 HTML。有没有办法在没有正则表达式的情况下做到这一点?

标签: javascripthtml-parsing

解决方案


尝试使用这个

document.querySelector("div[dir='ltr']").remove();

for (const brElement of document.querySelectorAll("br")) {
    brElement.remove();
}

推荐阅读