[JavaScript] nl2br mit replace(), allerdings nicht nach HTML-Tags

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] nl2br mit replace(), allerdings nicht nach HTML-Tags

    Hallo!

    Habe ein (für mich) kniffliges Problem.

    Ich möchte gerne einen Text aus einer Textarea im Browser mit der JavaScript-Funktion replace() so abändern das alle Zeilenumbrüche (\n) in <br />'s umgewandelt werden.
    Allerdings sollen nur \n's in <br />'s umgewandelt werden, wenn das \n nicht unmittelbar auf irgendeine Art von HTML-Tag folgt.

    Ganz kurz: Wenn im Text ">\n" dann kein <br />, wenn im Text "\n" ohne ">" davor, dann ein <br /> setzen.

    Wie man \n's zu <br />'s "konvertiert" habe ich schon rausbekommen - allerdings nicht wie man die \n's die unmittelbar nach HTML-Tags kommen ausschließt:

    text = text.replace(/\n/g, '<br />');

    Bin auf dem Gebiet der "RegExp" noch ein ziemlicher Neuling und danke euch schon mal für die Hilfe...

    Lumi

  • #2
    Re: [JavaScript] nl2br mit replace(), allerdings nicht nach HTML-Tags

    Ich habs persönlich nicht so mit Javascript (weil man sich eh nicht drauf verlassen kann und es deswegen auf dem Server sowieso nochmal prüfen und ggf. nachholen muß), aber probiers mal damit:

    text = text.replace(/[^>]\n/g, '<br />');

    Kommentar


    • #3
      Ich eigentlich auch nicht. Aber in diesem Fall musste es halt so gelöst werden. Danke für die Hilfe.

      Hat super geklappt bis auf eine Kleinigkeit:

      Musste vorher noch

      text = text.replace(/\r/g, '');

      ausführen, um die Wagenrückläufe zu eliminieren.

      Nochmal danke.

      Kommentar


      • #4
        Schade. Zu früh gefreut. Es klappt doch nich so ganz.

        Wenn man nur

        text = text.replace(/[^>]\n/g, '<br />');

        ausführt verändert sich gar nichts. Wenn man davor noch

        text = text.replace(/\r/g, '');

        ausführt hat man den gewünschten Effekt.
        Unerwünschter Nebeneffekt ist dann allerdings, dass überall wo <br />'s eingefügt wurden das letzte Zeichen in der Zeile fehlt.

        Ich weiß nicht mehr weiter...
        Zuletzt geändert von Lumi; 21.03.2006, 10:53.

        Kommentar


        • #5
          Das Zeichen vor dem \n ist auch Teil deines Suchtreffers - und wenn du den komplett ersetzt, fällt es natürlich weg.

          Also Klammern einfügen, um eine Back Reference zu erzeugen, und diese dann im Ersatz wieder mit angeben:
          Code:
          text.replace(/([^>])\n/g, '$1<br />')
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar

          Lädt...
          X