6

次のコードを使用します。

var x = 'foo';
console.log(x.replace(x, "\\$&"));​

ここに示すように、出力は '\foo' です: http://jsfiddle.net/mPKEx/

なぜだろう

'\\$&"?

私はすべての x を "\$&" に置き換えていますが、これは単なる計画の古い文字列です。関数の 2 番目の引数が代入される以外は何もしないはずなのに、string.replace がクレイジーな代入を行っているのはなぜですか...

4

2 に答える 2

9

$& は、Javascript の文字列置換における特別な参照です。一致した文字列を指します。

$$ - 「$」を挿入します
$& - 現在のパターン マッチのテキスト全体を参照します。
$` - 現在のパターン マッチの左側のテキストを参照します。
$' - 現在のパターン マッチの右側のテキストを参照します。
$n または $nn - n または nn は 10 進数で、n 番目の括弧を挿入します
            最初の引数が RegExp オブジェクトである場合、サブマッチ文字列。

参考

于 2012-09-07T03:08:42.930 に答える
2

あなたの場合:

var x = 'foo';
console.log(x.replace(x, function() {return '\\$&'}));

違いを参照してください: http://jsfiddle.net/mPKEx/10/

2 番目のパラメーターとして関数を指定できます。上記の特別な置換パターン ($$、$&、$`、$'、$n または $nn) は、この場合には適用されません。

于 2015-03-07T05:52:42.563 に答える