2016-04-26 20 views
0

Ich habe eine Frage über das Ersetzen von Backlash-Muster mit JavaScript ersetzen Methode.Javascript Regex ersetzen mit Escape-Backslash

var display_user = "mycompany\bobandalice"; 
display_user = display_user.replace(/\\/g,"\\\\"); 
document.write(display_user); 

Ich hoffe, ich den umgekehrten Schrägstrich in der display_user mit zwei Rücken zu ersetzen schlitzt so die document.write zeigt „mycompany \ bobandalice“ auf dem Display.

Stattdessen wird "mycompanyobandalice" angezeigt.

Was mache ich falsch? (Danke für Ihre Hilfe)

+0

Ihre Zeichenkette hat keinen Backslash darin, Sie müssen es entgehen. '" mycompany \\ bobandalice "' – Amous

Antwort

2

Die display_user Variable hat keinen Backslash-Literal, Sie haben also nichts zu ersetzen. Wenn "mycompany\bobandalice" Zeichenfolge ausgewertet wird, wird die \b Sequenz als Rücktaste interpretiert.

Also die replace ersetzt nichts, weil es zu spät ist - der Backslash ist nicht und ehrlich - war es noch nie.

+0

Danke @Zerkms - dieses Snippet stammt aus einem realen Beispiel, in dem der dem display_user zugewiesene Wert einen einzelnen umgekehrten Schrägstrich in dem Wert hat, der von einer Firewall im Metamuster zurückgegeben wird . – bobwilmes

+0

@bobwilmes in Ordnung. Ich bin mir nicht sicher, was es ändert. – zerkms

0

Die display_user Zeichenfolge hat keinen umgekehrten Schrägstrich. Versuchen Sie, den Backslash zu umgehen. Etwas wie dieses:

var display_user = "mycompany\\bobandalice"; 
//       ^notice the escaped backslash 
display_user = display_user.replace(/\\/g, '\'); 
+0

Vielen Dank @Amous - leider wird der Wert tatsächlich durch eine Firewall im Meta-Muster an den Code übergeben. Ich versuche, den einzelnen Backslash zu einem doppelten Backslash zu bearbeiten, um die Metamustervariable anzeigbar zu machen. – bobwilmes