获取URL查询参数并转换成对象
提取正则含义
多个非“[^?&=]+”字符后面接等于号“=”,后面分组为任意个非“?&=”字符,即"="号后的参数可以为空和任意非上述的特殊字符
//多个非“[^?&=]+”字符
/([^?&=]+)=([^?&=]*)/g
实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>将URL查询参数转换成object</title>
<style>
body {
background: rgba(30, 30, 30);
}
</style>
</head>
<body>
</body>
<script type="module">
const quryToObj = (url) => {
var params = url.split("?")[1].split("&")
var obj = {}
params.map(v => obj[v.split("=")[0]] = v.split("=")[1]);
return obj;
}
const getQueryObject = (url) => {
url = url == null ? window.location.href : url;
var search = url.substring(url.lastIndexOf("?") + 1);
var obj = {};
var reg = /([^?&=]+)=([^?&=]*)/g;
// var reg = /(.*)=(.*)/g;
var str = search.replace(reg, function (rs, $1, $2) {
var name = decodeURIComponent($1);
var val = decodeURIComponent($2);
val = String(val);
obj[name] = val;
return rs;
});
return obj;
}
console.log(quryToObj("http://www.test.net?id=123&a=1&bb=b"));
console.log(getQueryObject("http://www.test.xxx.net?id=345&a=2&a=d"));
</script>
</html>
网友评论