$ シンボルを使用した文字列置換での予期しない動作
文字列置換に string.replace() メソッドを使用する場合、特に、不可解な問題が発生します。置換文字列に $ 記号が含まれている場合。次のコードを考えてみましょう:
<code class="javascript">var text = "as"; text = text.replace(text,"$\'"); console.log(text);</code>
このコードでは、空の文字列がコンソールに出力されますが、直感に反しているように見えるかもしれません。この動作を理解するには、JavaScript 正規表現と string.replace() メソッドにおける $ の特別な意味を理解することが重要です。
Mozilla Developer Network のドキュメントによると、$ は正規表現において特別な意味を持っています。 。正規表現内では、$ は通常、一致する文字列の終わりをマークするために使用されます。ただし、string.replace() メソッドの置換文字列で使用される場合、$ は一致したパターン全体、またはキャプチャ グループを表します。
この場合、テキスト自体が $' に置き換えられるため、$ は次のように解決されます。一致したパターン (as) の場合、結果の文字列は $as になり、さらに as を $ に置き換えると空の文字列に解決されます。
この問題を解決するには、使用する場合は $ 文字をエスケープすることをお勧めします。置換文字列内のリテラル文字として使用されます。解決策の 1 つは、置換文字列として $$ を使用することです。
<code class="javascript">var text = "as"; text = text.replace(text,"$$\'"); console.log(text); // Outputs: $'</code>
以上がJavaScript で「text.replace(text, \'$\\\'\')」を実行すると空の文字列が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。