• ベストアンサー

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

Ajaxで読み込んだHTML文書内にあるスクリプトのコードだけを 抽出したいのですが、正規表現を教えてください。 自分で考えてみたものは、以下の方法です。 これが最良なのかわかりません。 「スクリプトは複数箇所に存在しない」という条件で構いません。 宜しくお願いします。 var HTML = 'ここにHTML'; HTML.match(/.*<script.*>([\w\W]*)<\/script>.*/); scr = RegExp.$1; eval(scr);

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

  • ベストアンサー
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.4

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

noname#84373
質問者

お礼

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

その他の回答 (3)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.3

文字列的には <script[^>]*>(.*)<\/script> で取れる気がするけれど・・・・・

noname#84373
質問者

お礼

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

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

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

noname#84373
質問者

お礼

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

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

HTMLobj = document.createElement("sc"); HTMLobj.innerHTML = HTML; src = HTMLobj.getElementByTagName("script")[0].innerHTML; 検証してないけど こんなやり方じゃダメ?

noname#84373
質問者

お礼

試してみました!ばっちりでした!実質1行で済みます! (.innerTextだと取得できないんですね^^;) 一度書き込んだものから、拾い取るようで無駄なような気もしますが 最小のコードかも? でも正規表現も知りたいですね。 とにかく有難うございました。 sendRequest( function( oj ) { HTMLobj.innerHTML = oj.responseText; eval(HTMLobj.getElementsByTagName('script')[0].innerHTML); }, '', 'POST', '????.html',true,true );

関連するQ&A