JS 获得url参数的问题

问题描述

 url: http://localhost:63343/IPcom/goodsDetail.html?booksId=1
 我alter了 r  结果得到的是booksId=1,,1,
 我不理解啊  按说匹配完就应该只有booksId=1啊,后面那两个怎么出来的

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

 function getUrlParam(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); 
    var r = window.location.search.substr(1).match(reg);  
    alert(r);
    if (r != null) return unescape(r[2]);

    return null; //返回参数值
}

//接收URL中的参数booksId
var id = getUrlParam('booksId');
console.log('id:'+id);

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.8k
2 个回答

发生这个的结果主要时match()方法的问题.当正则表达式后不是全局搜索的时候

match()方法的返回值是个数组,

数组中第一个元素是匹配到的数据,之后的元素是正则表达式子表达式匹配到的结果.

你的正则表达式有三个子表达式,所以返回的数组中还有三个元素对应三个子串,数组中其他元素不做解答.

测试代码如下:

var reg = new RegExp("(^|&)num=([^&]*)(&|$)");
var url = "num=1";
var r = url.match(reg);  
console.log(r)

结果:图片描述

具体match()方法的定义可以看w3c:http://www.w3school.com.cn/js...

match 哪里是有分组,第一个是匹配到,第二个,第三个表示 你中的括号的也就是分组的内容

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题