求解释以下正则意思

function loadPageVar (sVar) {
  return decodeURI(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURI(sVar).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
}
阅读 2.1k
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
}

这样看起来是不是明白多了,希望对你有帮助

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题