JavaScriptを使用してURLからパスだけを引き出す正しい方法は何ですか?
例:
URLがあります
http://www.somedomain.com/account/search?filter=a#top
しかし、私はこの部分を取得したいだけです
/ account/search
活用できるものがあれば、jQueryを使用しています。
現在のウィンドウにそれを提供する組み込みの window.location
オブジェクトのプロパティがあります。
// If URL is http://www.somedomain.com/account/search?filter=a#top
window.location.pathname // /account/search
// For reference:
window.location.Host // www.somedomain.com (includes port if there is one)
window.location.hostname // www.somedomain.com
window.location.hash // #top
window.location.href // http://www.somedomain.com/account/search?filter=a#top
window.location.port // (empty string)
window.location.protocol // http:
window.location.search // ?filter=a
このスキーマは URLUtils と呼ばれるインターフェースとして標準化されていることがわかりました。既存のwindow.location
オブジェクトとアンカー要素の両方がインターフェースを実装します。
したがって、anyURLに対して上記と同じプロパティを使用できます— URLでアンカーを作成し、プロパティにアクセスします。
var el = document.createElement('a');
el.href = "http://www.somedomain.com/account/search?filter=a#top";
el.Host // www.somedomain.com (includes port if there is one[1])
el.hostname // www.somedomain.com
el.hash // #top
el.href // http://www.somedomain.com/account/search?filter=a#top
el.pathname // /account/search
el.port // (port if there is one[1])
el.protocol // http:
el.search // ?filter=a
[1]:ポートを含むプロパティのブラウザサポートは一貫性がありません。参照: http://jessepollak.me/chrome- was-wrong-ie-was-right
これは、ChromeおよびFirefoxの最新バージョンで動作します。テストするInternet Explorerのバージョンはありませんので、JSFiddleの例を試してください。
また、アンカー要素なしで、URL自体のサポートを提供する URL
オブジェクトがあります。現時点では、安定したブラウザはサポートしていないようですが、Firefox 26で提供されると言われています。 サポートが必要な場合は、こちらで試してみてください 。
window.location.href.split('/');
すべてのURL部分を含む配列を提供します。これには通常の配列のようにアクセスできます。
または、@ Dylanによって提案された、パス部分のみの、よりエレガントなソリューション:
window.location.pathname.split('/');
これがcurrent urlの場合window.location.pathnameを使用し、それ以外の場合はこの正規表現を使用します。
var reg = /.+?\:\/\/.+?(\/.+?)(?:#|\?|$)/;
var pathname = reg.exec( 'http://www.somedomain.com/account/search?filter=a#top' )[1];