このページのリンクらしき文字列を全て取得します。
function getLink1() { var str = document.getElementsByTagName("BODY")[0].innerHTML; var arr = str.match(/<a[^>]+>/ig); str = ""; var len = arr.length; for( i = 0; i < len; i++ ) { str += arr[i] + "\n" } document.getElementById("resultLinkText").value = str; } function getLink2() { var str = document.getElementsByTagName("BODY")[0].innerHTML; var arr = str.match(/<a[\s\S]+?>/ig); str = ""; var len = arr.length; for( i = 0; i < len; i++ ) { str += arr[i] + "\n" } document.getElementById("resultLinkText").value = str; } function getLink3() { var str = document.getElementsByTagName("BODY")[0].innerHTML; var arr = str.match(/<a[\s\S]+?a>/ig); var arr2; str = ""; var len = arr.length; for( i = 0; i < len; i++ ) { var arr2 = arr[i].match(/>(.+)</i); try { str+= arr2[1] + "\n"; } catch(e){} } document.getElementById("resultLinkText").value = str; }
※ BODY より取得するので、IFRAME 内は対象外です ※ <a[^>]+> は、<a で始まって、> 以外が1つ以上続いて > で終わると言う意味です。 ※ <a[\s\S]+?> は、<a で始まって、
任意の文字が1つ以上続いて > で終わる最短の文字列と言う意味です。 ※ <a>〜</a> の 〜は単純には取得できません 一旦取得したアンカーより内側の文字列を取得しています ※ /ig の i は、大文字小文字を区別しないという意味です。 ※ /ig の g は、全ての対象を最後まで探すという意味です。 ■ もう少し詳しく JavaScriptの正規表現
タグ:javascript 正規表現
|