1. 程式人生 > >一個js通用函式,通過正則表示式獲取url的各個部分。

一個js通用函式,通過正則表示式獲取url的各個部分。

這個函式的功能就是把一段url的域名、路徑、檔名等等用陣列返回,通過陣列的索引訪問。

這個函式的核心是一段正則表示式,這段正則表達主要參考了微軟的指令碼文件。

註釋的內容較多,所以各個部分我就不一一說明了。這個函式主要是為了另外的一個功能"通過cookie控制頁面跳轉"而開發的。下一篇博文,我就會詳細介紹。並且附上完整的示例下載。

/********************************************************************
**
**比較通用的正則表示式,捕獲url各個部分。
**注意各部分基本上都包含了相應的符號,例如埠號如果捕獲成功,那就是':80'
**函式返回一個正則表示式捕獲陣列。
**注意,現在獲得的是一個數組,所以需要通過arr[i]的方式引用。
**正則表示式所有的匹配說明::.........
**$0
**整個url本身。如果$0==null,那就是我的正則有意外,未捕獲的可能。
**有一種未捕獲的情況已經被發現,那就是域名後面沒有以'/'結尾,如:'http://localhost'
**但是經過我的測試,IE和firefox會自動把域名後面加上'/'的。
**$1-$4  協議,域名,埠號,還有最重要的路徑path!
**$5-$7  檔名,錨點(#top),query引數(?id=55)
**
*********************************************************************/	
	
	function UrlRegEx(url)
	{	
		//如果加上/g引數,那麼只返回$0匹配。也就是說arr.length = 0
		var re = /(/w+):////([^/:|//]+)(/:/d*)?(.*//)([^#|/?|/n]+)?(#.*)?(/?.*)?/i;
		//re.exec(url);
		var arr = url.match(re);
		return arr;
	
	}
//--------示例程式碼:
	function getPath()
	{
		return UrlRegEx(location.href)[4];	
	}