2010-08-30 19 views

Respuesta

19

Me gustaría obtener la parte antes y después de lo que desea reemplazar y ponerlos a ambos lados.

igual:

var str = 'asd-0.testing'; 
var regex = /(asd-)\d(\.\w+)/; 

var matches = str.match(regex); 

var result = matches[1] + "1" + matches[2]; 

// With ES6: 
var result = `${matches[1]}1${matches[2]}`; 
+3

+1 Personalmente me gusta tener la colección de fósforos con frack. – eduncan911

+0

Acepto, tener el conjunto combinado disponible es más legible en mi opinión. –

44

usando str.replace(regex, $1);:

var str = 'asd-0.testing'; 
var regex = /(asd-)\d(\.\w+)/; 

if (str.match(regex)) { 
    str = str.replace(regex, "$1" + "1" + "$2"); 
} 

Editar: la adaptación en relación con el comentario

+0

Quiero reemplazar la subcadena con '1' no toda la cadena con la subcadena – dave

+0

Increíble, muchas gracias – Tallboy

107
var str = 'asd-0.testing'; 
var regex = /(asd-)\d(\.\w+)/; 
str = str.replace(regex, "$11$2"); 
console.log(str); 

O si está seguro de que no habrá ningún otro dígito en la cadena:

var str = 'asd-0.testing'; 
var regex = /\d/; 
str = str.replace(regex, "1"); 
console.log(str); 
+1

o con la función: 'asd-0.testing'.replace (/ (asd -) \ d (\ . \ w +) /, function (mystring, arg1, arg2) {return arg1 + 'mynumber' + arg2}) –

+1

¿Hay alguna respuesta donde NO sepas la estructura de la expresión regular? aquí básicamente estás creando una nueva expresión regular con dos coincidencias –

Cuestiones relacionadas