2016-04-07 11 views
0

Ich habe eine Zeichenfolge "styles-123.min.js", die ich mit "styles-456.min.js" ersetzen möchte. So mache ich das:js - backreference funktioniert nicht wie erwartet

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

alert(str) 

Der $ 0 wird nicht analysiert und das Ergebnis ist "$ 0-456-min.js". Warum?

Danke.

Antwort

0

Verwenden Sie in JavaScript $& anstelle von $0, um auf den gesamten Übereinstimmungswert zu verweisen.

Siehe String#replace() reference:

$& Einsätze des angepassten String.

Wenn Sie nicht $1 verwenden, gibt es keinen Punkt in der Erfassungsgruppe in dem Muster, können Sie

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

0

einfach überprüfen -123 mit folgenden regex verwenden.

Regex:-\d+

Javascript-Code

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

Regex101 Demo

0

Sie könnten tun ($1 bedeutet die erste abgestimmte Gruppe):

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

 
alert(str);

Verwandte Themen