molily: Zeichekette suchen und andere dabei ausschließen

Beitrag lesen

Genau das hat mir auch sorge bereitet und *ich* habe keine Möglichkeit gesehen, wie ich das allg. formuliert bekomme.

So z.B.

var results = /(?:[?&]mode=page(?:&[^&]+)*&id=([0-9]+)|[?&]id=([0-9]+)(?:&[^&]+)*&mode=page)/.exec(url);  
var id = results ? (results[1] || results[2]) : undefined;

id ist jetzt entweder eine Zahl oder undefined.

Aufgedröselt:

Reihenfolge mode/page

(?:
  [?&]mode=page  # mode-Parameter am Anfang des Query-Strings oder mittendrin
  (?:&[^&]+)*    # beliebe Anzahl von weiteren Parametern (davon ausgehend, dass & sie trennt)
  &id=([0-9]+)   # id-Parameter am Ende
|

Reihenfolge page/mode

[?&]id=([0-9]+) # id-Parameter am Anfang des Query-Strings oder mittendrin
  (?:&[^&]+)*     # weitere Parameter (s.o.)
  &mode=page      # mode-Parameter am Ende
)

Das ?: am Anfang der Klammern führt dazu, dass diese Teiltreffer nicht im ergebnis-Array auftauchen.

Leg mich nicht darauf fest, dass das zuverlässig funktioniert, siehe voriges Posting. Es ist möglich, aber nicht unbedingt besserer Code.

Mathias