zu Streifen habe ich einige invalidly verschachtelte HTML wie:Regex zu HTML-Tag mit bestimmten Attribut
<form class="form1" method="get">
<div>
<input name="field1">
</form>
<form class="form2" method="get">
<input name="field1">
</form>
</div>
Ja, es ist ein Chaos, fragen Sie nicht. Die ungültige Verschachtelung verursacht woanders Probleme. jQuery Ich denke, erwartet eine Schließung </div>
, und nur bei der letzten zu finden. Es behandelt dann das zweite <form>
-Tag als ungültig und verwirft auch das schließende </form>
unmittelbar darüber und nimmt an, dass alles zwischen den Zeilen 1 und 9 ein Formular ist.
Wenn ich diese Ausgabe an die Konsole:
$('.form1).html()
- alle Linie 1 - 9$('.form2).html()
- undefined
Also, was ich versuche, das Ganze zu tun ist, behandeln Ding als String, und verwenden Sie Regex, um Form2 auszuziehen. Ich erwarte einen regex so etwas wie:
formText.replace(/(<form\b[^>]*>)[^<>]*(<\/form>)/gi, "");
aber ich bin nicht sicher, wie die spezifische Form mit class=form2
zu verweisen.
Es gibt auch ein Problem mit einer mehrzeiligen Zeichenfolge.
Update: hinzugefügt mehr Details, um zu beschreiben, warum jQuery remove()
Methode nicht funktioniert. jQuery denkt nur, dass es leider eine Form gibt.
[Nicht Regex verwenden, um HTML/XML oder andere nicht-reguläre Sprache zu analysieren] (http: // stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contented-tags/1732454#1732454) –
Reparieren Sie nicht defekte HTML. Lass es einfach nicht kaputt gehen. –
@ Frederik.L danke für diesen nützlichen Einblick. – duncan