Regexp-Experte gefragt (stripTags)
TobiasBuschi
- javascript
0 amolip0 TobiasBuschi0 amolip
Hallo Allerseits,
Ich habe mir Gedanken darüber gemacht wie man stripTags in javascript XML konform realisieren kann.
Folgender, häufig verwendeter, Ausdruck ist nicht ganz korrekt:
/</?[^>]+>/gi
weil in einem Attribut das Zeichen ">" vorkommen darf.
x = '<div onclick="this.innerHTML=x>y?'big':'small'" >what</div>'.replace(/</?[^>]+>/gi, "");
alert(x)
gibt mir
y?'big':'small'" >what
jetzt müsste man den regulären Ausdruck irgendwie rückwärts laufenlassen können, so dass er beim > anfängt und nicht aufhört bis er das nächste < gefunden hat, da dieses Zeichen (<) in Attributen sowieso nicht erlaubt ist.
Geht sowas?
Besten Dank
Tobias
Hallo Tobias!
Folgender, häufig verwendeter, Ausdruck ist nicht ganz korrekt:
/</?[^>]+>/gi
weil in einem Attribut das Zeichen ">" vorkommen darf.
Schön, dass das mal jemandem auffällt :-)
Du kannst folgendes machen, bevor das Muster überhaupt zum schliessenden »>« des Starttags kommt, lässt du alle Attribute fressen. Das Muster besteht aus drei Teilen:
Anfang des Starttags :: <foo
0-x Attribute :: (Muster für ein Attribut)*
Ende des Starttags :: \s*/?>
Gruß Uwe
Hallo Uwe
Schade, ich dachte, dass es vieleicht irgendwie einfacher umsetzbar ist.
Aber danke! :)
Hallo Tobias
Schade, ich dachte, dass es vieleicht irgendwie einfacher umsetzbar ist.
Das ist eigentlich nicht so wild. Du musst zunächst einmal ein Muster für Attributknoten entwerfen und das besteht aus drei Teilen:
Pseudomuster: \s+ATTNAME \s*=\s* VALUE
Gruß Uwe