我有一些不正當地嵌套HTML,如:正則表達式剝離HTML標記某些屬性
<form class="form1" method="get">
<div>
<input name="field1">
</form>
<form class="form2" method="get">
<input name="field1">
</form>
</div>
是啊,這是一個爛攤子,不問。無效的嵌套在其他地方造成問題。我認爲jQuery預計關閉</div>
,並且只在最後一個找到它。然後,將第二個<form>
標記視爲無效,並且丟棄正上方的結束</form>
,並假定第1行和第9行之間的所有內容都是一種形式。
如果我將這些輸出到控制檯:
$('.form1).html()
- 所有線的1 - 9$('.form2).html()
- 未定義
那麼我現在要做的是把整個東西作爲一個字符串,並使用正則表達式去除form2。我期待一個正則表達式是這樣的:
formText.replace(/(<form\b[^>]*>)[^<>]*(<\/form>)/gi, "");
,但我不知道如何與class=form2
引用的具體形式。
這也是一個多行字符串的問題。
更新:添加更多細節,概述爲什麼jQuery的remove()
方法不起作用。 jQuery只認爲不幸有一種形式。
[不使用正則表達式解析HTML/XML或任何其他非正規語言(HTTP:// stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –
不要修復損壞的HTML。只是不要讓它突破。 –
@ Frederik.L感謝您的有益見解。 – duncan