TobiasBuschi: Regexp-Experte gefragt (stripTags)

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

  1. 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

    1. Hallo Uwe

      Schade, ich dachte, dass es vieleicht irgendwie einfacher umsetzbar ist.
      Aber danke! :)

      1. 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