正则-匹配获取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值来打印数组对


应的值

原文地址:https://www.cnblogs.com/CHEUNGKAMING/p/4936786.html