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

应的值

上一篇:iOS UIScrollView的简单使用


下一篇:Hadoop Hive概念学习系列之什么是Hive?(一)