0

MSWord から NicEdit RTE に貼り付けた html からジャンク タグを削除しています。

<OL>
<LI>Hello</LI>
<P dir=ltr align=left>
<LI>Two</LI>
<P></P>
<P dir=ltr align=left>
<LI>Three</LI>
<P></P>
<P dir=ltr align=left>
<LI></LI>
<P></P></OL>

私はすでに、アプリケーションが使用していないタグを大量に削除しています。ただし、タグを使用しているため、貼り付けられ<p>たすべてのタグを取り除くことはできません.<p>

およびタグ<p>内のタグを削除するための高速な (必ずしも正確であるとは限りません) 手段が必要です。<ol><ul>

タグを</?p\s?.*?>一致させる必要がありますが、内部にいるかpどうかを確認する方法がわかりません。olul

4

2 に答える 2

1

正規表現を使用せず、DOM 操作を使用します。

var div = document.createElement("div"),
    p;

div.innerHTML = str;
p = div.querySelectorAll("ol p, ul p");

for (var i = 0, len = p.length; i < len; i++) {
    p[i].parentNode.removeChild(p[i]);
}

console.log(div.innerHTML);

querySelectorAll問題に非常に役立ちますが、最新のブラウザーでのみサポートされていることに注意してください。MDNで互換性情報を参照してください。

デモ: http://jsfiddle.net/bSdMW/

于 2013-03-19T17:38:54.193 に答える
0

http://tidy.sourceforge.net/の HtmlTidy を試してみましたか? 独自のソース コードを記述する必要はまったくない場合があります。いずれにせよ、正規表現を使用して XML を解析することには危険が伴います。

于 2013-03-19T17:39:16.887 に答える