molily: Variablen in RegExps

Beitrag lesen

Der reguläre Ausdruck ist nicht fest, sondern soll also zur Laufzeit dynamisch erzeugt werden. Der Hinweis auf http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#eval@title=eval() kam schon in diesem Thread.

eval() ist trotzdem unnötig, dafür nimmt man new RegExp().

s = "?typ1=0&typ2=0";  
type = "typ1";  
ausdruck = new RegExp("(.*)" + type + "=(\\d+)(.*)");  
if (ausdruck.exec(s))  
  s = RegExp.$1 + type + (parseInt(RegExp.$2) + 1).toString() + RegExp.$3;

Könnte übrigens aber mit zwei Ausdrücken performanter sein.
Ein new RegExp(type + "=(\d+)").exec(s) ausführen, daraus den neuen String zusammenbauen (z.B. typ1=1) und letztlich den alten Treffer über s.replace(altertreffer, neuerstring) durch den neuen ersetzen.
Aber viele Wege führen nach Rom.

Mathias