URLの文字列からルート相対パスを取得
URLからルート相対パスを取得するには、次のような方法で実装できます。
関数定義
/**
* ルート相対パスを取得
* @param {string} path 取得元のパス
* @param {boolean} excludeQueryString クエリパラメータを除く(削除する)かどうか
* @param {boolean} excludeHashFragment ハッシュフラグメントを除く(削除する)かどうか
* @return {string} 取得したルート相対パスを返す
*/
var getRootRelative = function(path, excludeQueryString, excludeHashFragment) {
if (!path || !path.match(/(^\/|\/\/)/)) return '';
var rPath = path.replace(/\\/g, '/').replace(/^[^/]*\/\/[^/]*/, '');
if (excludeQueryString) rPath = rPath.replace(/\?([^#]+)?/, '');
if (excludeHashFragment) rPath = rPath.replace(/\#.*?$/, '');
return rPath;
};
使い方
var result = getRootRelative( urlString[, excludeQueryString, excludeHashFragment] );
引数
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 (必須) |
urlString | string | URL文字列 |
第二引数 | excludeQueryString | boolean | クエリ文字列(URLパラメーター)を除くかどうか |
第三引数 | excludeHashFragment | boolean | ハッシュフラグメントを除くかどうか |
戻り値
見つかった場合はルート相対パスの文字列、見つからなかったら空文字を返します。
var urlStr = 'http://example.co.jp/sample/test.php?foo=123&bar=abc&baz=a1b2c3',
result = getRootRelative(urlStr);
alert(result);