molily: Variablen in RegExps

Beitrag lesen

Hallo,

Könnte übrigens aber mit zwei Ausdrücken performanter sein.

Warum sollte es das?

Weil das Ausführen des Ausdrucks mit den beiden (.*) meines Wissens lahm ist.

var s, type, a, e, diff1, diff2, ausdruck, treffer;  
s = "?typ1=0&typ2=0";  
type = "typ1";  
  
a = new Date();  
for (i = 0; i < 10000; i++) {  
 ausdruck = new RegExp("(.*)" + type + "=(\\d+)(.*)");  
 if (ausdruck.exec(s))  
  s1 = RegExp.$1 + type + "=" + (parseInt(RegExp.$2) + 1) + RegExp.$3;  
}  
e = new Date();  
diff1 = e.getTime() - a.getTime();  
  
a = new Date();  
for (i = 0; i < 10000; i++) {  
 ausdruck = new RegExp(type + "=(\\d+)");  
 if (treffer = ausdruck.exec(s)) {  
  ersatz = type + "=" + (parseInt(treffer[1]) + 1);  
  s2 = s.replace(treffer[0], ersatz);  
 }  
}  
e = new Date();  
diff2 = e.getTime() - a.getTime();

Im Firefox und MSIE ist die zweite Methode bei mir schneller, im Opera deutlich langsamer.

Mathias