我有一些不正当地嵌套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