正则-匹配获取url参数

mac2022-06-30  22

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

最新回复(0)