用正则解析URL中的所有参数

先写一个测试地址

var url="www.baidu.com?a=1&b=2&C=3";

分析规则:

最前面是?或&,紧跟着除 ?&#以外的字符若干,然后是等号,最后再跟着除 ?&#以外的字符,并且要分组捕获到【除?&#以外的字符

写出来的正则就是这样:  var reg=/[?&]([^?&#]+)=([^?&#]+)/g;

用正则的exec来处理,同时用到while循环,因为我们不确定参数到底有多少对

可以看到在执行结果中匹配到的Array下标1就是我们要的参数名,下标2就是我们要的参数值,再把参数值、参数名放到对象中,完整如下:

	var url="www.baidu.com?a=1&b=2&C=3";//测试地址
	/*
		分析:
			最前面是?或&,紧跟着除 ?&#以外的字符若干,然后再等号,最后再跟着除 ?&#以外的字符,并且要分组捕获到【除?&#以外的字符】
	*/
	var reg=/[?&]([^?&#]+)=([^?&#]+)/g;
	
	var param={};
	var ret =  reg.exec(url);
	while(ret){//当ret为null时表示已经匹配到最后了,直接跳出
		param[ret[1]]=ret[2];
		ret = reg.exec(url);
	}
	
	console.log(param)

执行打印结果:

可以看到我们捕获到所有的参数,自己可以再做其他处理了。

处理while循环的时候要注意死循环,这是开发的时候经常犯错的地方,虽然我是老油条,也经常在这个地方犯错误,哈哈,打完收工!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程界小明哥

请博主喝瓶水,博主持续输出!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值