function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
}
name:为需要获得的参数名称
name:为需要获得的参数名称
(^|&)
^ //表示开始匹配
^|& //开始匹配处&可有可无
([^&]*)
[^&]* //匹配非&的任意字符 0到任意多
(&|$)
& //结束匹配
&|$ //结束匹配&可有可无
假设name=‘a’此正则可以匹配 "a=1","&a=1","&a=11&"
假设http:www.a.com?a=1&c=2
window.location.search获得?a=1&c=2
.substr(1) 表示从位置1开始 所以获得a=1&c=2
.match(reg)表示进行正则匹配如果name=‘a’ 匹配到的是a=1&,返回的数组是{‘a=1&’,‘’,‘1’,‘&’}
第一个是整体匹配,第二个匹配的是(^|&),第三个匹配的是([^&]*),第四个匹配的是(&|$)
r[2]就获得了参数值1,而unescape方法是用来解码的
例如:
<script type="text/javascript">
var test1="Hello 9366黄岛主!"
test1=escape(test1)
document.write (test1 + "<br />")
test1=unescape(test1)
document.write(test1 + "<br />")
</script>
运行结果
Hello%209366%u9EC4%u5C9B%u4E3B%21
Hello 9366黄岛主!