通过正则获取到参数值

2021-10-13  本文已影响0人  记录学习生活
/**
 * [通过参数名获取url中的参数值]
 * 示例URL:http://htmlJsTest/getrequest.html?uid=admin&rid=1&fid=2&name=小明
 * @param  {[string]} queryName [参数名]
 * @return {[string]}           [参数值]
 */
function GetQueryValue(queryName) {
    var reg = new RegExp("(^|&)" + queryName + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    /**
    *如果url中‘?’前面有‘#’,就要把search换成hash,需要截取几位字符串根据‘?’前面有几位具体设置
    *var r = window.location.search.substr(1).match(reg);
    */
    if ( r != null ){
       return decodeURI(r[2]);
    }else{
       return null;
    }
 }

调用

var queryVal=GetQueryValue('name');
console.log(queryVal);// 小明

search和hash的区别
search: ? 后的部分,又称为查询字符串 "?name=kang&when=2016"
hash: 返回 # 之后的内容 "#first"
注意上面的search和hash的区别,如果URL中?之前有一个#比如:“http://localhost:63342/index.html#/version?type=35&id=5”那么使用window.location.search得到的就是空(“”)。因为“?type=35&id=5”串字符是属于“#/version?type=35&id=5”这个串字符的,也就是说查询字符串search只能在取到“?”后面和“#”之前的内容,如果“#”之前没有“?”search取值为空。
详情参考

上一篇 下一篇

猜你喜欢

热点阅读