Open
Description
获取并解析url参数
正则
/([^&]+)=([^&]+)/g
解释下
这里=
是我们的锚点,以此为基础进行匹配
([^&]+) 匹配等号左边的字段
([^&]+) 匹配等号右边的字段,这里指获取下一个&之前所有的字段
实战
// 随便找个带search的URL
const needToParse = `https://www.baidu.com/s?wd=%E5%8E%89%E5%AE%B3%E4%BA%86%EF%BC%8C%E7%89%9B%E5%8F%89666
&rsv_spt=1&rsv_iqid=0xc3aa1c4b000475f0&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=38&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0
&inputT=464145&rsv_sug4=464269
&token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc
&1-2-3=789`
/**
* @return {} 返回 {key | value}的对象数据
* @param {String} str
*/
function parseUrlQuery(str) {
const parseStr = str ? str.split('?')[1] : window.location.search.replace('?', '')
const reg = /(\w+)=([^&]+)/g
const res = {}
let m
while (m = reg.exec(parseStr)) {
res[m[1]] = decodeURIComponent(m[2])
}
return res
}
测试
parseUrlQuery(needToParse)
{
wd: '厉害了,牛叉666',
rsv_spt: '1',
rsv_iqid: '0xc3aa1c4b000475f0',
issp: '1',
f: '8',
rsv_bp: '0',
rsv_idx: '2',
ie: 'utf-8',
tn: 'baiduhome_pg',
rsv_enter: '1',
rsv_sug3: '38',
rsv_sug1: '5',
rsv_sug7: '100',
rsv_sug2: '0\n',
inputT: '464145',
rsv_sug4: '464269\n',
token:'eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc' ,
'1-2-3': '789'
}
Metadata
Metadata
Assignees
Labels
No labels