2012-07-30 28 views
5

tratando de poner mi cabeza alrededor de algunas expresiones regulares utilizando JS. Reemplazar para reemplazar un número entero con una cadena.JS número de reemplazo de regex

Por ejemplo, la cadena podría ser:

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

que desea reemplazar el '0' con otro valor. Yo estaba originalmente usando esto:

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

Pero cuando empezamos la sustitución de dos dígitos o más (12, 200, 3204, se obtiene lo que me refiero), deja de funcionar correctamente. No estoy seguro de cómo hacerlo funcionar de la manera que yo quiero.

Gracias de antemano. Apreciado enormemente.

Respuesta

10

necesita especificar varios dígitos:

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

JS Fiddle demo

(Tenga en cuenta la demo utiliza jQuery para iterar a través de los nodos, pero es más que una ventaja, y no tiene relación con la expresión regular, simplemente demuestra su función.)

La razón por la que su original no funcionó, creo, fue porque \d coincide con un solo dígito, mientras que el operador + especifica el operador es el carácter anterior (en este caso dígito) una o más veces.

Referencia:

3

Usar la siguiente:

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

Eso debe coincidir con todos los dígitos entre paréntesis.

Cuestiones relacionadas