为了账号安全,请及时绑定邮箱和手机立即绑定

用JS获取url上的参数

用JS获取url上的参数

慕田峪9158850 2019-03-13 17:19:21
function getQuery(key) {    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"),        r = window.location.search.substr(1).match(reg);    if (r != null) return decodeURI(r[2])    return null}这段代码是获取URL上的参数的封装函数,他是用正则匹配的,我正则比较弱,麻烦社区上的大神帮我解读下(^|&): 表示什么含义=([^&]*)(&|$) 表示什么含义
查看完整描述

4 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

(^|&)表示开头位置或者&字符串位置

=([^&]*)(&|$)表示'='+非'&'字符串,并且末尾是结束或者'&'字符


查看完整回答
反对 回复 2019-03-30
?
慕的地10843

TA贡献1785条经验 获得超8个赞

补充楼上:

str.match(regexp);

如果字符串匹配到了表达式,会返回一个数组,数组的第一项是进行匹配完整的字符串,之后的项是用圆括号捕获的结果。如果没有匹配到,返回null

一次次问不如系统过一遍:
正则表达式
RegExp对象

在线正则工具


查看完整回答
反对 回复 2019-03-30
?
Helenr

TA贡献1780条经验 获得超4个赞

你的程序不能正常工作吧,形参key没有被使用,name这个变量不知道什么地方来的。

估计正确的代码是


function getQuery(keyName) {

    var reg = new RegExp("(^|&)" + keyName+ "=([^&]*)(&|$)"),

        r = window.location.search.substr(1).match(reg);

    if (r != null) return decodeURI(r[2])

    return null

}

这个函数的功能是在URI中查询keyName的值。

在match匹配后,返回数组结构是

[整个匹配项,头或者&,keyName的值(就是=后面有效部分),尾或者&,index:匹配的位置,input:整个输入]


查看完整回答
反对 回复 2019-03-30
  • 4 回答
  • 0 关注
  • 445 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信