V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
louieliu
V2EX  ›  问与答

求问正则 关于获取 url 参数

  •  
  •   louieliu · 2020-07-20 17:44:55 +08:00 · 1134 次点击
    这是一个创建于 1348 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    6 条回复    2020-07-20 20:41:23 +08:00
    netnr
        1
    netnr  
       2020-07-20 17:46:46 +08:00
    这是传参没有编码,用 encodeURIComponent 处理一下
    TomatoYuyuko
        2
    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
        3
    qiayue  
       2020-07-20 18:12:35 +08:00
    按照 http 协议,你的第二种写法是四个参数,你看 chrome 就是按照四个参数解析的
    azh7138m
        5
    azh7138m  
       2020-07-20 19:26:22 +08:00
    不需要考虑这个问题。
    参数会被 encode,`sd&we` 实际会变为 `sd%26we`。
    ShundL
        6
    ShundL  
       2020-07-20 20:41:23 +08:00 via iPhone
    你如果要通过正则来做,可以用环视,顺序肯定,匹配&后面除&外需要有个等号。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2655 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:23 · PVG 23:23 · LAX 08:23 · JFK 11:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.