2010-08-30 4 views

risposta

19

Vorrei ottenere la parte prima e dopo quello che si desidera sostituire e metterli entrambi i lati.

come:

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 mi piace avere la collezione di fiammiferi con cui giocare. – eduncan911

+0

Sono d'accordo, avere il set abbinato disponibile è più leggibile secondo me. –

44

utilizzando 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"); 
} 

Edit: l'adattamento per quanto riguarda il commento

+0

Voglio sostituire la sottostringa con '1' non l'intera stringa con la sottostringa – dave

+0

Incredibile, grazie mille – Tallboy

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

Oppure, se sei sicuro che non ci sarà nessun altre cifre nella stringa:

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

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

+1

c'è qualche risposta in cui NON conosci la struttura della regex? qui stai praticamente creando una nuova regex con due partite –