- ベストアンサー
Javascriptで特殊文字を置換する方法
- Javascriptで文字列の置換をする方法について教えてください。
- Perlで作成したHTMLとJavascriptにおいて、文字列置換がうまくできません。
- 特殊文字「$」を置換する際にエスケープ文字を除いた場合はうまくいくが、Perlの出力で問題が発生します。解決策を知っている方、教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Perlは触ったことがないので間違ってるかもしれませんが PerlからHTMLが作られる際にエスケープ処理がすでに行われてしまい リプレースの時点ではエスケープ文字がなくなっているのではないかと思います。 var rgexp = new RegExp("\\$body\\$", "g"); とエスケープ文字をさらにエスケープしてみてください。
その他の回答 (1)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
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("\\$") が変換されて /\$/ となります。)
お礼
回答ありがとうございます。 talooさんが直接の回答になりますが、先に回答頂いた件でこちらでもいろいろ試してできました。 最終的には「\\\\\$left\\\\\$」な感じでできました。 またよろしくお願いいたします。
お礼
ありがとうございます。お二方の回答でうまくいきました。 しかしながらduronさんのお答で解決できましたのでBAにさせて頂きます。