js|通过正则表达式获取 多个url 参数(牛客网)

  1. 指定参数名称,返回该参数的值 或者 空字符串
  2. 不指定参数名称,返回全部的参数对象 或者 {}
  3. 如果存在多个同名参数,则返回数组
function getUrlParam(sUrl, sKey) {
  result = {};//用来存储参数键值对
  sUrl.replace(/\??(\w+)=(\w+)&?/g, function(str, key, value) {
   if (result[key] !== undefined) {//键值已定义
     var t = result[key];
      result[key] = [].concat(t, value);//把新元素拼接成一个数组
    } else {//键值未定义
      result[key] = value;//直接为对象创建这个新属性
    }
  });

 if (sKey === undefined) {//函数第二个参数未传入时,返回整个对象
   return result;
  } else {//传入了第二个参数,直接返回键值
    return result[sKey] || "";
  }
}

1、getUrlParam 函数接收两个参数,分别是 surl 和 指定的参数名称(可能为空)。

2、声明一个空的对象,用来存放字符串中的 参数名:参数值;

3、使用 string 的 replace 方法,需要注意的是,如果第一个参数是正则表达式,并且其为全局匹配模式,第二个参数为函数,那么这个方法将被多次调用,每次匹配都会被调用,否则只在第一次会调用。

str.replace(regexp|substr, newSubStr|function)
sUrl.replace(/\??(\w+)=(\w+)&?/g,function(a,k,v){...}) // 在surl中查找匹配 /\??(\w+)=(\w+)&?/g 的字符串 a,其中第一个(\w+)捕获组的匹配项为 k;第二个(\w+)捕获组的匹配项为 v。

容易忽略的点(易报错):

  1. replace是一个回调函数,可以接受匹配到的整个字符串和多个子串为参数;
  2. 回调函数用箭头函数写的话,在牛客网的环境下会报错
  3. 最后返回空字符串的写法“”,不能加空格
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值