• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:戻り読みの代わりとなる正規表現について)

正規表現で画像のパスをマッチさせる方法

このQ&Aのポイント
  • JavaScriptでは戻り読み表現が使えないため、正規表現を使って特定の画像のパスをマッチさせる方法を探しています。
  • 対象のソースコードから特定の画像のパスだけを抽出する方法について教えてください。
  • マッチさせたい画像のパスがURLの中に含まれる場合でも、バラバラなサイト名や文字数、画像名でもうまくマッチさせる方法を教えてください。

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

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.1

あまり詳しくないですが、 2段階に分けてパーズしてみてはいかがでしょう。 (function(){ var src = document.getElementsByTagName('body')[0].innerHTML; var regex1 = new RegExp( '<[^>]*>', 'g' ); var regex2 = new RegExp( '<img\\s[^>]*src="([^">]+)"[^>]*>', 'i' ); var tags = src.match( regex1 ); for( var i in tags ){  var tag = tags[i];  if( regex2.test( tag ) ){   var matches = regex2.exec( tag );   var url = matches[1];   alert( url );  } } })();

suzienuzie
質問者

お礼

ご回答ありがとうございます! 結論としては、1段階でのマッチは不可能ということでしょうか。 情けないことに教えてくださった内容の半分も理解できていないのですが、ご回答とソースとにらめっこで何とかがんばってみます。 内容がわからないので、ベストアンサーは一番早く回答をくださった方にさせていただきます。 本当にありがとうございました!

その他の回答 (3)

回答No.4

dom かぁ なら、1.8で alert (Array.map (document.querySelectorAll ('a > img'), (function (i) i.src)).join ('\n'));

suzienuzie
質問者

お礼

ご回答ありがとうございます!

回答No.3

既に正解が出てますが。。。 正規表現を使わずにDOMアクセスじゃ駄目なんですか? -------------------------------------------------------- <body> <a href="http://abc.com/"><img src="http://image.abc.com/def.jpg"></a> <a href="http://hogehoge.com/"><img src="http://hogehoge.com/hoge.jpg"></a> <a href="http://123.com/"><img src="http://456.com/789.jpg"></a> <a href="http://momomo.com/"><img src="http://lelele.com/momo.jpg"></a> <script type="text/javascript"> var i; var imgs = document.getElementsByTagName('img'); var pool = []; for( i = 0; i < imgs.length; i++ ) { pool.push( imgs[i].src ); } alert( pool ); </script> </body>

suzienuzie
質問者

お礼

ご回答ありがとうございます!

回答No.2

var str = document.getElementsByTagName('body')[0].innerHTML; var reg = /(?:<img\s+src\s*=\s*"(.+)?".*?>)/g; var rst = []; var tmp; while (tmp = reg.exec (str))  rst.push (tmp[1]); alert(rst.join("\n")); とか。

suzienuzie
質問者

お礼

ご回答ありがとうございます!

関連するQ&A