• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javascriptで特殊文字を置換する方法)

Javascriptで特殊文字を置換する方法

このQ&Aのポイント
  • Javascriptで文字列の置換をする方法について教えてください。
  • Perlで作成したHTMLとJavascriptにおいて、文字列置換がうまくできません。
  • 特殊文字「$」を置換する際にエスケープ文字を除いた場合はうまくいくが、Perlの出力で問題が発生します。解決策を知っている方、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.1

Perlは触ったことがないので間違ってるかもしれませんが PerlからHTMLが作られる際にエスケープ処理がすでに行われてしまい リプレースの時点ではエスケープ文字がなくなっているのではないかと思います。 var rgexp = new RegExp("\\$body\\$", "g"); とエスケープ文字をさらにエスケープしてみてください。

Azzz___
質問者

お礼

ありがとうございます。お二方の回答でうまくいきました。 しかしながらduronさんのお答で解決できましたのでBAにさせて頂きます。

その他の回答 (1)

回答No.2

Perlからの出力ですか? Perlの記述 #ダブルクォーテーションの場合 print "var rgexp = new RegExp(\"\$body\\\\\$\", \"g\");\n"; #シングルクォーテーションの場合 print 'var rgexp = new RegExp("$body\\\\$", "g");' , "\n"; 出力例 (これをブラウザでアクセスしてソースコードを見ると、以下のようになっていると思います。) var rgexp = new RegExp("$body\\$", "g"); ヒアドキュメント等を使っている場合は、出力例のようになるようにPerlの記述を調整してください。 -------------- ・Perlでは$は「変数」を意味しますので、$という文字を出力するためにエスケープが必要です。 ・正規表現の最後に現れる$記号は「$という文字」ではなく、「データの最後」を意味しますので、$文字にするためにエスケープが必要です。 ・RegExp()に文字列を渡すとき、文字列から正規表現への変換でエスケープ記号が1つ使われます。  ( RegExp("\\$") が変換されて /\$/ となります。)

Azzz___
質問者

お礼

回答ありがとうございます。 talooさんが直接の回答になりますが、先に回答頂いた件でこちらでもいろいろ試してできました。 最終的には「\\\\\$left\\\\\$」な感じでできました。 またよろしくお願いいたします。

関連するQ&A