正則獲取URL參數


一 獲取指定URL參數

function getUrlParams(name) { 
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); //定義正則表達式 var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; }

window.location = "http://www.baidu.com?name=elephant&age=25&sex=male";
var name = getUrlParams("name"); //elephant
var age = getUrlParams("age"); //25
var sex = getUrlParams("sex"); //male

  首先理解定義的正則表達式,(^|&)意思是從頭開始匹配字符&, =([^&]*)意思是匹配=后面零個或多個不是&的字符,直至碰到第一個&為止,(&|$)意思就是匹配最后一個&,在正則表達式中,增加一個()代表着匹配數組中增加一個值, 因此代碼中的正則匹配后數組中應包含4個值, 在getUrlParams("name")函數中,此時 r 獲取到的數組應該是 ["name=elephant&", "", "elephant", "&"]

  代碼中 window.location.search 意思是取window.location中 '?'后面的值包括'?',因此所得到的值是"?name=elephant&age=25&sex=male"

  substr()這個函數的作用是截取字符串,在代碼中window.location.search.surstr(1) 意思就是截取第一個字符后面的字符串,所得到的值即是"name=elephant&age=25&sex=male" 

  unescape這個函數的作用是解碼escape編碼后的字符串

二 獲取所有的URL參數

  

function parse_url(_url){ //定義函數
  var pattern = /(\w+)=(\w+)/ig;//定義正則表達式
  var parames = {};//定義數組
  url.replace(pattern, function(a, b, c){
    parames[b] = c;   });   return parames;//返回這個數組. } var url = "http://www.baidu.com?name=elephant&age=25&sex=male" 
var params = parse_url(url);// ["name=elephant", "age=25", "sex=male"]

 

  當replace匹配到name=elephant時.那么就用執行function(a,b,c);其中a的值為:name=elephant,b的值為name,c的值為elephant;(這是反向引用.因為在定義正則表達式的時候有兩個子匹配.),然后將數組的key為name的值賦為elephant;然后完成.

  再繼續匹配到age=25;此時執行function(a,b,c);其中a的值為:age=25,b的值為age,c的值為25;然后將數組的key為id的值賦為25.


免責聲明!

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



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