新しく質問する

<script>...</script>内のコードの抽出方法

役に立った:1件
  • 質問者:noname#84373
  • 投稿日時:2008/02/08 10:55
  • 困り度:困ってます
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

Ajaxで読み込んだHTML文書内にあるスクリプトのコードだけを
抽出したいのですが、正規表現を教えてください。
自分で考えてみたものは、以下の方法です。
これが最良なのかわかりません。
「スクリプトは複数箇所に存在しない」という条件で構いません。
宜しくお願いします。

var HTML = 'ここにHTML';
HTML.match(/.*<script.*>([\w\W]*)<\/script>.*/);
scr = RegExp.$1;
eval(scr);

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:1件)
  • 参考になった:0件

No.4ベストアンサー20pt

  • 回答者:SAYKA
  • 回答日時:2008/02/08 21:39

>改行が
ああそうか・・・ mフラグ付けると どう?
ダメなら [\s\S]* とか使う事になると思うけど・・・

通報する

この回答へのお礼

mフラグの存在を知りませんでした。;_;
scr = s.replace(/[\s|\S]*<script>|<\/script>[\s\S]*/gm,'');
で、コードだけを抽出できました。
ありがとうございました。これですっきり。

  • 参考になった:0件
  • 回答者:SAYKA
  • 回答日時:2008/02/08 17:43

文字列的には

<script[^>]*>(.*)<\/script>

で取れる気がするけれど・・・・・

通報する

この回答へのお礼

改行があると拾えないのです・・・

  • 参考になった:0件
  • 回答者:SAYKA
  • 回答日時:2008/02/08 16:41

ごめん getElementsByTagName だね…(「s」抜け)

通報する

この回答へのお礼

えへへっ!私なぞよくやります!

  • 参考になった:0件
  • 回答者:SAYKA
  • 回答日時:2008/02/08 16:39

HTMLobj = document.createElement("sc");
HTMLobj.innerHTML = HTML;
src = HTMLobj.getElementByTagName("script")[0].innerHTML;


検証してないけど こんなやり方じゃダメ?

通報する

この回答へのお礼

試してみました!ばっちりでした!実質1行で済みます!
(.innerTextだと取得できないんですね^^;)
一度書き込んだものから、拾い取るようで無駄なような気もしますが
最小のコードかも?
でも正規表現も知りたいですね。
とにかく有難うございました。

sendRequest( function( oj ) {
HTMLobj.innerHTML = oj.responseText;
eval(HTMLobj.getElementsByTagName('script')[0].innerHTML);
}, '', 'POST', '????.html',true,true );

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ

Facebook公式ページ

公式Twitter