Hallo,
replace(/x^([0-9])/g, "x^" + (parseInt("$1") + 1) + "");
Du musst dir vorstellen, wie der JavaScript-Parser und -Interpreter arbeitet: Erstmal wertet er die Expressions aus und führt erst dann den Befehl mit den angegebenen Parametern aus. Und der replace-Parameter ist ein einfacher String und keine Expression, die dann erst innerhalb von replace ausgeführt wird!
Hier haben wir die Expression »"x^" + (parseInt("$1") + 1) + ""«, die erstmal so berechnet wird:
"x^" + (parseInt("$1") + 1) + ""
= "x^" + (NaN + 1) + ""
= "x^" + NaN + ""
= "x^" + NaN.toString() + ""
= "x^" + "NaN" + ""
= "x^NaN"
Dann wird replace(... , "x^NaN") aufgerufen. Das ist alles, was replace zu Gesicht bekommt. Erst damit arbeitet replace und ersetzt $1 ggf. durch etwas. Da kommt aber gar kein $1 mehr vor.
Mathias