需求:
let str = 'a=111&b=222&c=333'
想要的是 a=111 、b=222这个字段,不要用split,脚本特殊
自己大概写了一下 但是没有实现
/a=[0-9]*[^&]/
需求:
let str = 'a=111&b=222&c=333'
想要的是 a=111 、b=222这个字段,不要用split,脚本特殊
自己大概写了一下 但是没有实现
/a=[0-9]*[^&]/
[a-z_$][a-z_$0-9]*
代表key的规则,字母、下划线、$打头,后面可以跟字母、数字、下划线、$=
代表key=value中的分隔符[^&]*
代表所有不是&分隔符的都选中,当然也可以是空。当然,对于你这种需求,/[^&]+/g
也是不错的。不是&的就是一组数据
function getQuery (str) {
var res = {}
var href = ''; try { href = window.location.href } catch (e) {};
(str!==null && typeof str!=='undefined' ? str : href).replace(/[^=?&]*=[^=&?]*/g, function (g) {
res[decodeURIComponent(g.replace(/=.*/g, ''))] = decodeURIComponent(g.replace(/.*=/g, ''))
});
return res
}
getQuery('a=12&b=456') // => {a: "12", b: "456"}
如果对兼容性要求不高,可以考虑原生方法:
let instance = new URLSearchParams('a=111&b=222&c=333')
instance.get('a')
"111"
instance.get('b')
"222"
instance.get('c')
"333"
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答2.6k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
我来说下原理:
第一: 匹配出所有的不包含'&'的字符串
第二: 这个串不包含 ""空字符串