私が遭遇した問題を単純化しました。
Chrome で次のコードを実行すると、奇妙な動作が発生します。
var a = "$&";
var b = "aba";
var c = b.replace(/a/, a);
console.log(c); // expected output is: "$&b$&"
// but output is: "aba"
しかし、次のコードを実行すると、期待される出力が得られます
var a = "c";
var b = "aba";
var c = b.replace(/a/, a);
console.log(c); // expected output is: "cbc"
// and output is: "cbc"
これを解決する方法はありますか?
これはバグですか?
何らかの方法で変数 a の文字列をエスケープする必要がありますか?