遇到的问题:获取 url 中的参数
- 指定参数名称,返回该参数的值 或者 空字符串
- 不指定参数名称,返回全部的参数对象 或者 {}
- 如果存在多个同名参数,则返回数组
使用正则进行判断
该代码引用牛客网 —— 作者:JianJian
function getUrlParam(sUrl,sKey){
var result = {};
sUrl.replace(/\??(\w+)=(\w+)&?/g,function(a,k,v){
console.log('a,k,v',a,k,v) //观察a、k、v
if(result[k] !== void 0){
var t = result[k];
result[k] = [].concat(t,v);
}else{
result[k] = v;
}
});
if(sKey === void 0){
return result;
}else{
return result[sKey] || '';
}
}
console.log(getUrlParam('http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe','key'))
知识点
对传递进来的地址,进行参数截取操作
正则方法与字符串连用的方法:search、match、replace
在这里使用replace
简介
作用:replace将字符串中满足正则条件的字符串替换掉
语法:字符串.replace(正则,要替换的字符串)
返回值:替换后的字符串
注意:replace的第二个参数可以是一个函数
该函数有三个形参;三个形参的含义分两种情况
1.在只有一个匹配项
三个参数:模式的匹配项、匹配项在字符串中的位置、原始字符串
2.有多个匹配项
三个参数:模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项…