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 回答