js處理url參數


哎,又是一道筆試題……都怪我太懶,不多思考。之前一直用別人的代碼來獲取url參數值,別人的代碼是用正則表達式來寫的,代碼如下:

1 function getURLParam(name) { 2     return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)', "ig").exec(location.search) || [, ""])[1].replace(/\+/g, '%20')) || null; 3 }

參數解釋:name指要獲取的參數名,字符串變量。

正則表達式解釋:

new RegExp('(?|&)' + name + '=([^&;]+?)(&|#|;|$)', "ig")的意思是:
①創建一個正則表達式,匹配以字符?或者&開始,中間含有=的,並以&或#或;或$結束的字符串。
②ig意思是忽略大小寫,進行字符串全局搜索。

exec方法為檢索字符串中的正則表達式的匹配,存在匹配字符串則返回一個數組(第0個元素為正則表達式匹配的字符串,1,2,3...等分別存儲正則表達式字串的匹配字符),不存在則返回null值。
這里取第一個子表達式(即:([^&;]+?))所匹配到的字符串,也就是我們想要的字串
exec方法學習:JavaScript exec() 方法
location.serach為url中?及其后邊的字串(包含?)。

筆試剛看到這道題時,腦子里都是悔恨啊,悔恨到居然把split函數給忘了!!雖然這樣寫很雞肋,但是還是能解決問題的!

用split寫的雞肋代碼:

 1 function getUrlParam(name){  2         var arr = decodeURIComponent(location.search.split('?')[1]).split('&');  3         var request=[];  4         var temp=[];  5         for(var i = 0;i<arr.length;i++){  6             temp = arr[i].split('=');  7             request[temp[0]] = temp[1];  8  }  9         return request[name] || null; 10     }

代碼就不解釋了。就是用split不斷的切割切割...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM