通过正则获取到参数值

/**
 * [通过参数名获取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取值为空。
详情参考

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容