热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通用代码js获取URL参数

URL参数格式http:localhos:8080demo?ab&cd&ef匹配参数a对应的表达式为^a([^&]*)&匹配参数b对应的表达式为&b([^&]*)&匹配参数c对应

URL参数格式

http://localhos:8080/demo?a=b&c=d&e=f
匹配参数a对应的表达式为 ^a=([^&]*)&
匹配参数b对应的表达式为&b=([^&]*)&
匹配参数c对应的表达式为&c=([^&]*)$
http://localhos:8080/demo?h=i
匹配参数h对应的表达式为^h=([^&]*)$

请思考: 为什么[^&]*要使用()包裹?

代码

function getQueryString(name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");var r = window.location.search.substr(1).match(reg); // 获取url中"?"符后的字符串并正则匹配var context = "";if(r != null)context = r[2];reg = null;r = null;return context == null || context == "" || context == "undefined" ? "" :context;
}

说明

window.location中的属性如下图(1)所示
这里写图片描述

图(1)



href:请求URL


search:请求URL中请求参数的部分(含有?,在对此部分内容进行解析时,需要注意问号)

getQueryString(name)中形参name的值
是我们要从URL中获取的参数名

window.location.search.substr(1)是截取?后面的内容进行匹配

"(^|&)" + name + "=([^&]*)(&|$)"

(^|&)表示 匹配字符串的起始位置或&字符

name表示匹配name的值

=([^&]*)(&|$)表示匹配 等号+零到多个非&的字符+&字符或字符串结束位置

这里写图片描述

图(2)

从图(2)中可看出下标为2的元素就是我们希望获取的参数值,若对match()返回数组中各元素所代表的含义不理解的可查看 Javascript match()函数匹配正则表达式时的返回值问题


参考资料

js中window.location.search的用法和作用
正则表达式语法
Javascript match()函数匹配正则表达式时的返回值问题
读懂正则表达式就这么简单

看完了内容,前面提到的思考问题现在明白了吗?


推荐阅读
author-avatar
非机动车地了
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有