表題の件で分からず教えてください。
PerlでHTMLとJavascript(HTML埋め込み)を作成しています。
Javascript(On Click)で、文字列を置換させたいのですが、うまくできません。
(最終的にやりたいことはTextAreaに埋め込んだタグ付き文章を「プレビューする」ようなイメージです)
■置換前の文字列
$body$
■置換後の文字列
任意の文字列(タグを含む)
ネットで調べたところ次の方法でできるようだったので試しましたが、できませんでした。
var rgexp = new RegExp("\$body\$", "g");
str = frm.preview.value.replace(rgexp, "■■■");
「$」とエスケープ文字をはずすとうまくいくので、多分「$」で失敗しているのだと思いますが
解決が分かりません。
※エスケープをはずすとPerlの出力時に怒られてしまいます
お分かりになる方いらっしゃいましたらお願いします。
No.1ベストアンサー
- 回答日時:
Perlは触ったことがないので間違ってるかもしれませんが
PerlからHTMLが作られる際にエスケープ処理がすでに行われてしまい
リプレースの時点ではエスケープ文字がなくなっているのではないかと思います。
var rgexp = new RegExp("\\$body\\$", "g");
とエスケープ文字をさらにエスケープしてみてください。
ありがとうございます。お二方の回答でうまくいきました。
しかしながらduronさんのお答で解決できましたのでBAにさせて頂きます。
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("\\$") が変換されて /\$/ となります。)
回答ありがとうございます。
talooさんが直接の回答になりますが、先に回答頂いた件でこちらでもいろいろ試してできました。
最終的には「\\\\\$left\\\\\$」な感じでできました。
またよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptプログラムを日本時...
-
正整数の半角数字かどうか判定する
-
JavaScriptでテキス...
-
「終了していない文字列型の定...
-
ASP(VBS) ←→ JavaScript の変数...
-
VB.NET2003 テキストボックスに...
-
Vba SelStart、SelLen教えてく...
-
JSPの処理の途中で、JavaScript...
-
Ajax以外で、JavaScriptからPHP...
-
「光の三原色」みたいな「三つ...
-
Javascriptエラーの原因が分か...
-
csvファイルを読み込み、該当項...
-
Win版IllustratorCS3でJavascri...
-
VBScript から JavaScript を呼...
-
初心者です。gulpでコンパイル...
-
C#でボタン名を変更しても動く
-
時間稼ぎの命令文とは?
-
ASPでエクセルの起動
-
javascript:void(0)とは何でし...
-
Excel vba 配列内の最大値を求...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【JavaScript】ソースのコメン...
-
WebページまたはHTMLソースから...
-
コメント削除/圧縮/難読化
-
変換テーブルを使った、文字列...
-
WSH をC#で作ることは可能でし...
-
六曜カレンダー
-
リアルタイム時計をミリ秒まで...
-
javascriptでexcel閉じる
-
リロードしないと正常に表示さ...
-
文字列圧縮_
-
Java Script を.jsファイルを利...
-
PHPでエスケープされた文字列を...
-
javascriptで文字コード変更
-
拡大スクリプト・zoom_ブック...
-
if(1){...}とはどういうことで...
-
Vba SelStart、SelLen教えてく...
-
JavaScriptで ブラウザの閉じる...
-
ブラウザ自体の事じゃなくてJav...
-
VB.NET2003 テキストボックスに...
-
JSPの処理の途中で、JavaScript...
おすすめ情報