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


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


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


慕田峪9158850
浏览 446回答 4
4回答

慕码人2483693

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

慕的地10843

补充楼上:str.match(regexp);如果字符串匹配到了表达式,会返回一个数组,数组的第一项是进行匹配完整的字符串,之后的项是用圆括号捕获的结果。如果没有匹配到,返回null一次次问不如系统过一遍:正则表达式RegExp对象在线正则工具

Helenr

你的程序不能正常工作吧,形参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:整个输入]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript