Fritz: replace mit regex

Hallo,

Javascript scheint nach meinen bescheidenen Kenntnissen ja keine einfache Möglichkeit zu bieten, unerwünscht Zeichen am Anfang und Ende eines Strings zu entfernen. (oder doch?)
Ich hab mir also folgende regex gebastelt, um alle "+" am Anfang und Ende, sowie alle Leerzeichen am Anfang zu entfernen:

mystring = mystring.replace(/^(\s+|++)/,'').replace(/(++)$/,'');

Da mir das Ganze nicht sehr elegant erscheint, die Frage:
Sind offensichtliche Fehler in meiner regex?
Kann man das eleganter schreiben?
Insbesondere: wie kann man die doppelten .replace vermeiden (ich will ja in beiden Fällen - vorne und hinten - jeweils nur löschen, d.h. durch '' ersetzen.

Gruß Fritz

--
ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
http://webdesign.weisshart.de
  1. hi,

    Insbesondere: wie kann man die doppelten .replace vermeiden (ich will ja in beiden Fällen - vorne und hinten - jeweils nur löschen, d.h. durch '' ersetzen.

    in dem du dir nur das aus dem string heraussuchst, was hinter führenden plus-/leerzeichen und vor abschließenden pluszeichen an beliebigem text steht - und dann den gesamtstring durch diesen treffer ersetzt.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      in dem du dir nur das aus dem string heraussuchst, was hinter führenden plus-/leerzeichen und vor abschließenden pluszeichen an beliebigem text steht - und dann den gesamtstring durch diesen treffer ersetzt.

      Ja, genau das soll der regex. Nur: wie mache ich das? indem ich alle führenden plus/leerzeichen und alle abschließenden pluszeichen lösche? Und dann sage, was übrigbleibt, ist mein String, durch den ich dann den Gesamtstring ersetze.

      Da beißt sich die Katze in den Schwanz, bzw. ich dreh mich im Kreis.
      Ich find einfach keinen regex, der folgendes macht: liefere mir _alle_ Zeichen eines Strings (also auch eventuelle Whitespace und Pluszeichen), die nach (beliebig vielen) führenden Whitespace oder Pluszeichen kommen. Entweder mir fehlt dazu die Phantasie, oder (wahrscheinlicher) die Kenntnisse.

      Gruß Fritz

      --
      ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
      http://webdesign.weisshart.de
  2. Hallo,

    Hallo,

    Javascript scheint nach meinen bescheidenen Kenntnissen ja keine einfache Möglichkeit zu bieten, unerwünscht Zeichen am Anfang und Ende eines Strings zu entfernen. (oder doch?)

    doch. Hier findest du weitere Informationen:
    http://de.selfhtml.org/javascript/objekte/regexp.htm
    http://de.selfhtml.org/perl/sprache/regexpr.htm

    mystring = mystring.replace(/^(\s+|++)/,'').replace(/(++)$/,'');

    Da mir das Ganze nicht sehr elegant erscheint, die Frage:
    Sind offensichtliche Fehler in meiner regex?
    Kann man das eleganter schreiben?

    Ja

    Insbesondere: wie kann man die doppelten .replace vermeiden (ich will ja in beiden Fällen - vorne und hinten - jeweils nur löschen, d.h. durch '' ersetzen.

    Dies sollte das gewünsche Erbebnis bringen:
    myNewString = myString.replace(/\+| /g,"");

    cu,
    ziegenmelker

    1. Hallo,

      Dies sollte das gewünsche Erbebnis bringen:
      myNewString = myString.replace(/\+| /g,"");

      Ich fürchte daß damit auch Pluszeichen/Leerzeichen _innerhalb_ von myString replaced werden. Und genau das will ich nicht.

      Gruß Fritz

      --
      ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
      http://webdesign.weisshart.de
      1. Hallo,

        Ich fürchte daß damit auch Pluszeichen/Leerzeichen _innerhalb_ von myString replaced werden. Und genau das will ich nicht.

        verstehe. Die von dir angegebene RegEx versagt jedoch schon beispielsweise bei diesem String:
        var myString = " ++ +Hinz+ Kunz +++";

        Die einzige Lösung, die ich bisher gefunden habe, sieht so aus:

        var myString = " ++ +Hinz+   Kunz +++";  
        myString = myString.substr(myString.search(/\w/));  // eventuell nach weiteren Zeichen suchen  
        pos = myString.search(/\++$/); // "+ " oder "++ " am Ende wird nicht erkannt  
        if (pos!=-1) {  
          myString = myString.substr(0,pos);  
        }
        

        cu,
        ziegenmelker