enkidu: RegExp: Wie bis zum ersten Vorkommen eines Trenners ersetzen?

Hi,

ich möchte per JS eine URL modifizieren. Also einen Query-Parameter löschen. Aber meine RegExp greift zu weit!

Input: http://mydomain?aaa=bbb&ccc=ddd&eee=fff&ggg=hhh
Ziel: ccc=ddd eliminieren!

Wenn ich es jetzt mit
   newurl = oldurl.replace( /aaa=.+&/, '' )
probiere, wird mir zu viel ersetzt. Und zwar immer bis zum letzten Vorkommen des &. *grmpf* ;) Es kommt also immer http://mydomain?aaa=bbb&ggg=hhh heraus!

Es soll aber das nächste Vorkommen von & genommen werden, nicht das letzte!

Wie muß denn meine RegExp lauten, damit dann hinterher sauber aus

Input: http://mydomain?aaa=bbb&ccc=ddd&eee=fff&ggg=hhh
  Ziel: ccc=ddd eliminieren!
  Output: http://mydomain?aaa=bbb&eee=fff&ggg=hhh

wird?

Vg,
Enkidu

  1. Hi,

    ich möchte per JS eine URL modifizieren. Also einen Query-Parameter löschen. Aber meine RegExp greift zu weit!

    Dein Stichwort lautet "greediness".

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Dein Stichwort lautet "greediness".

      Sehr hilfreich, danke. :(

      Ich hab es bereits mit ^ und $ probiert, auch mit ?. Aber komme nicht weiter.

      Wenn Du es schon weißt, dann schreib es doch einfach, anstatt so oberlehrerhaft gönnerisch zu tun. Das bringt mir jetzt auch nix!

      Enkidu

      1. Hi,

        Dein Stichwort lautet "greediness".

        Sehr hilfreich, danke. :(

        Ich hab es bereits mit ^ und $ probiert,

        Warum? Die haben nicht das geringste damit zu tun.

        auch mit ?. Aber komme nicht weiter.

        Und uns deinen Versuch nicht zu zeigen, hältst du für clever?

        Lies bitte die Tipps für Fragende.

        Wenn Du es schon weißt, dann schreib es doch einfach, anstatt so oberlehrerhaft gönnerisch zu tun. Das bringt mir jetzt auch nix!

        Dumm rummotzen bringt dir auch nichts.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Wenn ich es jetzt mit
       newurl = oldurl.replace( /aaa=.+&/, '' )
    probiere, wird mir zu viel ersetzt.

    Möglichkeit 1: Anstatt . eine negative Zeichenklasse verwenden, welche nur bis zum nächsten & bzw. bis zum String-Ende reicht.

    /aaa=[^&]+/g

    Möglichkeit 2: Den . mit einem ? einschränken, sodass er nicht mehr »gierig« (»greedy«) ist.

    /aaa=.+?&/g

    Wie gesagt lautet das Stichwort greediness.

    Mathias