用JS获取url上的参数

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上的参数的封装函数,他是用正则匹配的,我正则比较弱,麻烦社区上的大神帮我解读下

(^|&): 表示什么含义

=([^&]*)(&|$) 表示什么含义

阅读 6.4k
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:整个输入]

(^|&)表示开头位置或者&字符串位置
=([^&]*)(&|$)表示'='+非'&'字符串,并且末尾是结束或者'&'字符
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题