<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>拆分URL</title>
</head>
<body>
<script>
var urlStr="https://www.baidu.com/baidu?isource=infinity&iname=baidu&itype=web&tn=99249017_hao_pg&ie=utf-8&wd=%E6%B7%98%E5%AE%9D";
function getUrlObj(urlStr){
var protocolReg=/\w+(?=:)/g;
var hostReg=/(?<=\/\/)[\s\S]*(?=\/)/g;//采用反向断言和正向断言来截取两个特殊字符串自中间的值。
var pathReg=/(?<=\/)[^\/]+?(?=\?)/g;//找到/与?之间的字符串,且该字符串中没有斜杠/
var searchReg=/(?<=\?)[\s\S]*/g;//采用反向断言截取?后面所有字符串
var oUrl={};
oUrl.protocol=urlStr.match(protocolReg)[0];
oUrl.host=urlStr.match(hostReg)[0];
oUrl.path=urlStr.match(pathReg)[0];
var searches=urlStr.match(searchReg)[0];
oUrl.seach={};
var keyValueArr=searches.split('&');
keyValueArr.forEach(function(ele){
var keyValue=ele.split('=');
oUrl.seach[keyValue[0]]=keyValue[1];
})
return oUrl;
}
console.log(getUrlObj(urlStr));
</script>
</body>
</html>