我正在将从MSWord粘贴的html中的垃圾标签移到我的NicEdit RTE中。
<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
代码匹配,但我不知道如何检查我是否在ol
或ul
内。
答案 0 :(得分: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上的兼容性信息。
答案 1 :(得分:0)
您是否尝试过使用http://tidy.sourceforge.net/中的HtmlTidy?您可能根本不需要编写自己的源代码。无论如何,使用正则表达式解析XML充满了危险。