zoukankan      html  css  js  c++  java
  • 正则-匹配获取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值来打印数组对


    应的值

  • 相关阅读:
    人到中年,奋斗了十几年结果却是负债累累,还要继续创业吗?
    迁移学习简述
    迁移学习简述
    关于mysql数据库的表概况 ,查看表状态
    关于mysql数据库的表概况 ,查看表状态
    关于mysql数据库的表概况 ,查看表状态
    关于mysql数据库的表概况 ,查看表状态
    一个简易的SocketIM
    一个简易的SocketIM
    一个简易的SocketIM
  • 原文地址:https://www.cnblogs.com/CHEUNGKAMING/p/4936786.html
Copyright © 2011-2022 走看看