J.Hahn: Tags per regulärem Ausdruck: Problem!

Hi allerseits,

eigentlich sollte das Finden und Entfernen von Tags ja ne Standardaufgabe sein, allerdings will mein regulärer Ausdruck in Javascript nicht das finden, was ich möchte ;-) :

var regularExp = /<([a-z1-6]+)></($1)>/gi;
content = content.replace(regularExp, '');

... soll alle Vorkommen von leeren Tags (z.B. <u></u>, <strong></strong> oder <h1></h1>) aus dem String "content" entfernen. Mit diesem regulären Ausdruck wird allerdings die gesuchte Zeichenfolge nicht gefunden.

Dieser hier:
var regularExp = /<([a-z1-6]+)></([a-z1-6]+)>/gi;

finden zwar die gesuchte Zeichenfolge, allerdings auch sowas wie "<u></h1>". Die Rückbeziehung auf den ersten Suchtreffer ("$1") scheint nicht zu funktionieren. Weiß hier vielleicht jemand Rat?

Vielen Dank und Grüße, Josef

  1. Hallo J.Hahn!

    var regularExp = /<([a-z1-6]+)></($1)>/gi;
    content = content.replace(regularExp, '');

    Aus http://de.selfhtml.org/javascript/objekte/regexp.htm#dollar_1_9:

    $[1..9]
    Speichert die umklammerten Bestandteile eines regulären Ausdrucks. Diese lassen sich benutzen, um bestimmte Teile eines Strings zu _extrahieren_ oder _unter Zuhilfenahme der Funktion  replace() zu ersetzen_.

    So wie Du es haben willst, geht es nicht. Denn Du hast $1 im Suchausdruck und nicht als/im Ersetzungsmuster. Was Du brauchst, ist eine Backreferenz:

    var content = "<u></u> und noch was <h1></h1> und <u></h1>";

    var regularExp = /<([a-z1-6]+)></\1>/gi;
    content = content.replace(regularExp, '');
    alert (content);

    Ausgabe:
     und noch was  und <u></h1>

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    Nichts ist unmöglich? Doch!
    Heute schon gegökt?