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);

JavaScript逆引きリファレンス一覧へ戻る