2010-08-30 11 views

cevap

19

Bu parçayı, değiştirmek istediğiniz şeyden önce ve sonra alırım ve iki tarafa koyarım.

gibi:

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

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

Düzenleme::

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 Şahsen benimle uğraşmak için maçların toplanmasını istiyorum. – eduncan911

+0

Kabul ediyorum, eşleştirilen kümeye sahip olmak bence daha okunabilir. –

44

str.replace(regex, $1); kullanarak yorumu ile ilgili adaptasyon

+0

Altyazıyı – dave

+0

alt dizesiyle tüm dizgiye değil '1' ile değiştirmek istiyorum Şaşırtıcı, – Tallboy

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

Ya Eminseniz başka rakam olmayacak dizedede:

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

'a çok teşekkür ederim veya işlevi kullanarak: 'asd-0.testing'.replace (/ (asd -) \ d (\ . \ w +) /, işlev (mystring, arg1, arg2) {return arg1 + 'mynumber' + arg2}) –

+1

regex'in yapısını bilmediğiniz bir yanıt var mı? Burada iki maçla temel olarak yeni bir regex yaratıyorsunuz –