- ベストアンサー
正規表現で画像のパスをマッチさせる方法
- JavaScriptでは戻り読み表現が使えないため、正規表現を使って特定の画像のパスをマッチさせる方法を探しています。
- 対象のソースコードから特定の画像のパスだけを抽出する方法について教えてください。
- マッチさせたい画像のパスがURLの中に含まれる場合でも、バラバラなサイト名や文字数、画像名でもうまくマッチさせる方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
あまり詳しくないですが、 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 ); } } })();
その他の回答 (3)
- babu_baboo
- ベストアンサー率51% (268/525)
dom かぁ なら、1.8で alert (Array.map (document.querySelectorAll ('a > img'), (function (i) i.src)).join ('\n'));
お礼
ご回答ありがとうございます!
- reggaepunc
- ベストアンサー率59% (64/108)
既に正解が出てますが。。。 正規表現を使わずに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>
お礼
ご回答ありがとうございます!
- babu_baboo
- ベストアンサー率51% (268/525)
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")); とか。
お礼
ご回答ありがとうございます!
お礼
ご回答ありがとうございます! 結論としては、1段階でのマッチは不可能ということでしょうか。 情けないことに教えてくださった内容の半分も理解できていないのですが、ご回答とソースとにらめっこで何とかがんばってみます。 内容がわからないので、ベストアンサーは一番早く回答をくださった方にさせていただきます。 本当にありがとうございました!