2012-07-30 20 views
5

Ich versuche, einen Regex mit JS .replace zu verstehen, um eine ganze Zahl durch einen String zu ersetzen.JS regex replace number

Zum Beispiel könnte die Zeichenfolge sein:

var string = 'image[testing][hello][0][welcome]'; 

ich die ‚0‘ mit einem anderen Wert ersetzt werden soll. Ich war dies ursprünglich mit:

string.replace(/\[\d\]/g, '[newvalue]'); 

Aber wenn wir beginnen zu ersetzen zweistellige oder mehr (12, 200, 3204, Sie bekommen, was ich meine), es nicht mehr funktioniert einwandfrei. Ich bin mir nicht sicher, wie ich es so funktioniere, wie ich es möchte.

Vielen Dank im Voraus. Sehr geschätzt.

Antwort

10

Sie müssen mehrere Ziffern angeben:

string.replace(/\[\d+\]/g, '[newvalue]'); 

JS Fiddle demo

(Anmerkung der Demo jQuery verwendet durch die Knoten zu durchlaufen, aber es ist nur eine Bequemlichkeit, und hat keinen Einfluss auf den regulären Ausdruck, es zeigt nur seine Funktion.)

Der Grund, dass Ihr Original nicht funktioniert, denke ich, war, weil \d nur eine einzige Ziffer entspricht, während die + Operator/Charakter specif Das vorangehende (in diesem Fall Ziffer) Zeichen ein- oder mehrmals.

Referenz:

3

Verwenden Sie die folgenden Schritte aus:

string.replace(/\[\d+\]/g, '[newvalue]');

, dass alle Ziffern in Klammern entsprechen sollte.