正則-匹配獲取url參數


1.根據指定參數名獲取參數值

A頁面向連接到B頁面的url為:

http://www.189dg.com/ajax/sms_query.ashx?action=smsdetail&sid=22&stime=2014-06-27&etime=2014-06-27

我們要得根據參數名獲取到參數值,如根據action可以獲取到smsdetail


B頁面里:

我們可以通過  var url = window.location;獲取到A頁面傳輸過來的url。

 var sid = GetParam(url, "sid");//這樣我們就獲取到參數名為sid的值,即22.


//獲取參數的方法

//url為穿過來的鏈接,id為參數名

   function GetParam(url, id) {
            url = url+ "";
            regstr = "/(\\?|\\&)" + id + "=([^\\&]+)/";
            reg = eval(regstr);//eval可以將 regstr字符串轉換為 正則表達式
            result = url.match(reg);//匹配的結果是:result[0]=?sid=22 result[1]=sid result[2]=22。所以下面我們返回result[2]

            if (result && result[2]) {
                return result[2];
            }
        }


2.獲取所有參數保存到數組

 

var url = "http://127.0.0.1/e/action/ShowInfo.php?classid=9&id=2";
function parse_url(_url){
 var pattern = /(\w+)=(\w+)/ig;
 var parames = {};
 url.replace(pattern, function(a, b, c){
  parames[b] = c;
 });
 return parames;
}
var parames = parse_url(url);
alert(parames['classid'] + ", " + parames['id']);
</script>

解析:
這是最關鍵的.當replace匹配到classid=9時.那么就用執行function(a,b,c);其中a的值
為:classid=9,b的值為classid,c的值為9;(這是反向引用.因為在定義正則表達式的時候有
兩個子匹配.)
  然后將數組的key為classid的值賦為9;然后完成.
 再繼續匹配到id=2;此時執行function(a,b,c);其中a的值為:id=2,b的值為id,c的值為2;然
后將數組的key為id的值賦為2.

調用:
var parames = parse_url(url);
alert(parames['classid'] + ", " + parames['id']);//最后打印.根據key值來打印數組對


應的值


免責聲明!

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



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