求问正则 关于获取 url 参数

2020-07-20 17:44:55 +08:00
 louieliu

正常的 url.search 里参数都是通过&符区分的 但是有个问题是 参数值里有了&符 所以不能使用以前的方法

普通情况: http://www.example.com?a=12&b=34 
特殊情况: http://www.example.com?a=12&b=sd&we&c=34e

那么问题来了 应该怎么写这对应的正则能通吃这两种情况呢

1313 次点击
所在节点    问与答
6 条回复
netnr
2020-07-20 17:46:46 +08:00
这是传参没有编码,用 encodeURIComponent 处理一下
TomatoYuyuko
2020-07-20 18:05:29 +08:00
不用正则随便写了个,可以简化下。。
let t = `am=12&b=sd&we&c=34e`
let arr = t.split('=')
let obj = {}
let tempArr = []
for (let i = 1; i < arr.length; i++) {
tempArr = arr[i].split('&')
tempArr.pop()
obj[arr[i - 1].split('&').pop()] = tempArr.join('&')
}
console.log(obj)
qiayue
2020-07-20 18:12:35 +08:00
按照 http 协议,你的第二种写法是四个参数,你看 chrome 就是按照四个参数解析的
autoxbc
2020-07-20 18:52:49 +08:00
azh7138m
2020-07-20 19:26:22 +08:00
不需要考虑这个问题。
参数会被 encode,`sd&we` 实际会变为 `sd%26we`。
ShundL
2020-07-20 20:41:23 +08:00
你如果要通过正则来做,可以用环视,顺序肯定,匹配&后面除&外需要有个等号。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX