前端页面跳转url传值代码中的r[2]

本文深入讲解了如何使用JavaScript解析URL中的查询字符串,重点解析了正则表达式与match函数的运用,以及为何返回r[2]。对于JS新手,这是理解URL参数获取的关键。
function getQueryString(name){
    //(^|&)匹配字符串开头或&开头,(&|$)匹配字符串结尾或&结尾
    let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
    //window.location.search得到url中?部分,substr()返回一个从指定位置开始的指定长度的子字符串,
    //这里设置为1,是为了把url中的?号去掉
    let r = window.location.search.substr(1).match(reg);
    if(r!=null)return unescape(r[2]); return null;
}

具体代码: let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
let r =window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;

这个是网上大部分的解释,作为一个js新手,对为什么返回一个r[2]表示十分不理解,网上对该代码解读千篇一律,对r[2]只字不提,所以写了这篇博客,希望帮助解决同为新手的困惑。
其实主要对js中match函数的返回值不太了解,match返回一个对象类似数组,第一个元素就是匹配成功的字符串,比如“xx=xx”,“&xx=xx”之类的,第二个元素就是正则reg中的第一个括号(^|&)中的值,比如“xx=xx”匹配到的就是空字符,而“&xx=xx”匹配到的就是&,几个括号就对应几个元素,所以r[2]就表示第三个元素,也就是第二个括号 ([^&]*)中的值,即参数的值。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值