问题描述
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);
发生这个的结果主要时match()方法的问题.当正则表达式后不是全局搜索的时候
match()方法的返回值是个数组,
数组中第一个元素是匹配到的数据,之后的元素是正则表达式子表达式匹配到的结果.
你的正则表达式有三个子表达式,所以返回的数组中还有三个元素对应三个子串,数组中其他元素不做解答.
测试代码如下:
结果:
具体match()方法的定义可以看w3c:http://www.w3school.com.cn/js...