- ベストアンサー
<script>...</script>内のコードの抽出方法
Ajaxで読み込んだHTML文書内にあるスクリプトのコードだけを 抽出したいのですが、正規表現を教えてください。 自分で考えてみたものは、以下の方法です。 これが最良なのかわかりません。 「スクリプトは複数箇所に存在しない」という条件で構いません。 宜しくお願いします。 var HTML = 'ここにHTML'; HTML.match(/.*<script.*>([\w\W]*)<\/script>.*/); scr = RegExp.$1; eval(scr);
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>改行が ああそうか・・・ mフラグ付けると どう? ダメなら [\s\S]* とか使う事になると思うけど・・・
その他の回答 (3)
- SAYKA
- ベストアンサー率34% (944/2776)
文字列的には <script[^>]*>(.*)<\/script> で取れる気がするけれど・・・・・
お礼
改行があると拾えないのです・・・
- SAYKA
- ベストアンサー率34% (944/2776)
ごめん getElementsByTagName だね…(「s」抜け)
お礼
えへへっ!私なぞよくやります!
- SAYKA
- ベストアンサー率34% (944/2776)
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 );
お礼
mフラグの存在を知りませんでした。;_; scr = s.replace(/[\s|\S]*<script>|<\/script>[\s\S]*/gm,''); で、コードだけを抽出できました。 ありがとうございました。これですっきり。