2016-04-07 29 views
0

"styles-123.min.js" ile değiştirmek istediğim "styles-456.min.js" dizgisi var. Bu yüzden bunu:js - backreference beklendiği gibi çalışmıyor

str = "styles-123.min.js"; 
str = str.replace(/(styles|apps)/, "$0" + "-456"); 

alert(str) 

$ 0 ayrıştırılır ve sonuç "$ 0-456-min.js" dır değildir. Niye ya?

Teşekkürler.

cevap

0

JavaScript'te, tüm eşleşme değerine başvurmak için $0 yerine $& kullanın.

String#replace() reference bakınız:

$& ekler Eşleşen alt. Eğer $1 kullanmazsanız

, desende yakalama grubundaki anlamı yok, sen Basitçe aşağıdaki regex kullanarak -123 kontrol

str = "styles-123.min.js"; 
 
str = str.replace(/styles|apps/, "$&-456"); 
 
document.body.innerHTML = str;

0

kullanabilirsiniz.

Regex:-\d+

JavaScript Kod

str = "styles-123.min.js"; 
 
str = str.replace(/-\d+/, "-456"); 
 
alert(str);

Regex101 Demo

0

Sen yapabilirdi ($1 ilk eşleşen grubu anlamına gelmektedir):

str = "styles-123.min.js"; 
 
str = str.replace(/(styles|apps)[0-9-]+/, "$1-456"); 
 

 
alert(str);

İlgili konular