function loadPageVar (sVar) {
return decodeURI(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURI(sVar).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
}
loadPageVar这个方法的作用就是通过正则匹配出当前页面url中的search中对应sVar对应的值;
如http://www.example.com?a=12&b=hello
loadPageVar('a');
//12
loadPageVar('b');
//hello
接下来,解释一下这个函数,及这个很看似很复杂的正则
function loadPageVar (sVar) {
var search = window.location.search;//获取url中的search部分
sVar = encodeURI(sVar);//编码sVar,因为url中的字符串是被encode之后的,如sVar=“姓名”,其在url中实际为"%E5%A7%93%E5%90%8D"
sVar = sVar.replace(/[\.\+\*]/g,"\\$&");//转义正则关键字符.+*为\.\+\*,避免影响正则
var reg = new RegExp("^(?:.*[&\\?]" + sVar + "(?:\\=([^&]*))?)?.*$", "i");
//以&或?为左侧包含编码后sVar=,且以&或空为右侧
return decodeURI(search.replace(reg, "$1"));//返回解码后的实际值,$1即为([^&]*))?)为=右侧部分,如a=123中的123
}
这样看起来是不是明白多了,希望对你有帮助