获取地址栏上的URL参数现在最简单通用的方法应该就是下面这种了。 function getUrlParam (name) {var reg = new RegExp('(^|&)' + name +
顺晟科技
2021-06-16 10:35:05
368
在地址栏中获取URL参数最简单最常用的方法如下。
函数getUrlParam (name) {
var reg=新RegExp('(^|)'名称'=([^]*)(|$)');
var r=window . location . search . substr(1)。match(reg);
if (r!=null)返回decodeURIComponent(r[2]);返回null
}
//怎么用:http://www.test.com?a=123b=231
var a=getUrlParam('a')//a=123
var b=getUrlParam('b')//b=231
然而,这种方法有缺陷,它不能识别网址中的值带或=号,例如:http://www.test.com?A=123b=231到了
参数a的值为“123”,
如果您仍然使用上述方法获取:
a=1
为什么?有必要分析一下这种方法的原理
//首先,获取URL
var r=window . location . search . substr(1);
//window . location . search . substr(1)能得到URL吗?以下字符串,例如:http://www.test.com?A=123b=231将得到:a=123b=231
//然后有规律地求出每个参数下的值
var reg=新RegExp('(^|)'名称'=([^]*)(|$)')
//1.这里的(|)匹配以null或开头的字符
//2.这里的name是与您正在寻找的匹配的参数名
//3.([] *)这里是匹配“parameter=”后的non的字符
//4.(|$)在此匹配以空结尾的字符
//这里的四个条件求出a=123或者b=231在a=123b=231
r=r . match(reg);
//在这里,match方法可以找出正则字符并以数组的形式给出,例如,如果我们要找一个:
/*
[
A=123 ',//这里是整场正规比赛
,//匹配的是(|)
123 ',//这里是([] *)匹配
//这里有一个(| $)匹配
]
*/
//我们需要的是第三个([] *)匹配字符
Decoderuicomponent(r[2])//在这里获取数组的第三个值,用Decoderuicomponent进行转码
-就这样。如果你早在a=123遇到它,你将早终止它。通向http://www.test.com?a=123b=231中a的值为1
怎么才能避免?我们需要修改这里的规律性
var reg=新RegExp('(^|)'名称'=([^]*)(|$)')
//此处上一段“(|)”名称“=”不变。
//但是([] *)这里的限制必须取消。不能让它只匹配非字符。所以改成([。*])来匹配任何字符(这可能不是很严格)
//(| $)这里最后一个不能用或空来判断,应该是xxx=这个结局。所以改为([=]=| $)来匹配,也就是说开头和结尾之间夹着“非”和“=”等其他字符。这将满足我们的要求。
//最后的正则表达式应该是:
var reg=新RegExp('(^|)'名称'=(。*)([^=]=)');
//这里,因为(。*)匹配所有字符,会匹配到最后一个匹配的参数([=]=),会停止,会造成问题。
//例如,‘http://www.test.com?A=123b=231c=565 '当你转到' a '时,你会得到' 123b=231 ',其中包括b's。因此,此处需要进一步处理,以仅移除b=的先前值。
//这里假设‘a’的值是123b=231
var a='123b=231 '
var l=a . match(/[=]=/)[0]//这里会得到个匹配的字符串'/[=]=/':'b='
A=a.split(l)[0] //这里我们按照l除a,取个,这就是我们想要的
//但是,这不能匹配最后一个参数,因为最后一个是空结尾而不是' xxx=',所以多写一个匹配最后一个参数的正则。
var reg=新RegExp('(^|)'名称'=(。*)($)');
整个新方法是:
函数getUrlParam (name) {
var reg=新RegExp('(^|)'名称'=(。*)([^=]=)');
var regLast=新RegExp('(^|)'名称'=(。*)($)');
var r=window . location . search . substr(1)。match(reg)| | window . location . search . substr(1)。匹配(RegLast);
if (r!=null) {
var l=r[2]。match(/[^=]=/)
if (l) {
返回decodeURIComponent(r[2]。split(l[0])[0]);
} else return decodeURIComponent(r[2]);
}
返回null
}
请指出任何错误。
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2019-08