一個js通用函式,通過正則表示式獲取url的各個部分。
阿新 • • 發佈:2019-01-31
這個函式的功能就是把一段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]; }