正则表达式——链接参数值获取
GetQueryString 是 h5 获取 url 链接参数值的方法,但在小程序中不适用,故新增 getParamVal。
写 getParamVal 时,有几个点没能尽快处理,这里做下记录:
1、关于正则表达式的写法:字面量、对象。
2、获取 url 参数字段应该根据提供参数再得到对应参数值,一开始纠结于字面量写法的正则表达式如何能随意更改匹配字符,思考及试错后,想到 h5 页面获取的方式。
3、字面量的正则表达式两斜杠内容复制到 RegExp() 括号内,一些编译器会自动转换。
4、字符串解码方法 unescape --> decodeURI 前者已经废除了。
// var urlStr = "https://mstoreview.dsdxo2o.com/search.aspx?type_id=努力里会藏着幸运&parent_id=50008090&gcat_id=50012984&_v=201507&tostore=163";
var urlStr = "https://mstoreview.dsdxo2o.com/search.aspx?type_id=%E5%8A%AA%E5%8A%9B%E9%87%8C%E4%BC%9A%E8%97%8F%E7%9D%80%E5%B9%B8%E8%BF%90&parent_id=50008090&gcat_id=50012984&_v=201507&tostore=163";
function getParamVal(name, url) {
// var reg = /type_id=(\S*)/; // 字面量
var reg = new RegExp(name + "=(\\S*)"); // 对象 获取 name 字符后面的字符串
var str = url.match(reg)[1];
var val = str.match(/(^.*?)&/)[1]; // 获取第一个 & 前面的字符
return decodeURI(val);
}
var a = getParamVal("type_id", urlStr);
console.log(a); // 努力里会藏着幸运
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null)
return unescape(r[2]);
return "";
}