2016-04-26 5 views
0

JavaScriptの置き換えメソッドでバックラッシュを置き換える方法について質問があります。Javascriptの正規表現がエスケープされたバックスラッシュで置き換えられます

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

私は2つのバックがとてもディスプレイ上のdocument.writeディスプレイ「mycompanyののの\ bobandaliceを」スラッシュとdisplay_userにバックスラッシュを置き換えるために期待しています。

代わりに、 "mycompanyobandalice"と表示されます。

私は間違っていますか? (ご協力いただきありがとうございます)

+0

文字列にバックスラッシュが含まれていないため、エスケープする必要があります。 '' mycompany \\ bobandalice "' – Amous

答えて

2

display_user変数にはバックスラッシュリテラルがまったくないため、置き換えることはありません。

"mycompany\bobandalice"文字列が評価されるとき、\bシーケンスはバックスペースとして解釈されます。

したがって、replaceは、遅すぎるため、何も置き換えられません。バックスラッシュは正直ではなく正直にそこにはありませんでした。

+0

ありがとう@Zerkms - このスニペットは、display_userに割り当てられた値がファイアウォールからメタパターンで返される値に単一のバックスラッシュを持つ実際の例です<シングルバックスラッシュ>。 – bobwilmes

+0

@bobwilmes大丈夫です。しかし、それが何を変更するか分からない。 – zerkms

0

display_user文字列には実際にバックスラッシュ文字はありません。バックスラッシュをエスケープしてみてください。このようなもの:

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

@Amousありがとうございました - 残念ながら、値は実際には<のメタパターンのファイアウォールによってコードに渡されています。私は、メタパターン変数を表示可能にするために、単一のバックスラッシュを二重バックスラッシュに編集しようとしています。 – bobwilmes

関連する問題