louieliu
V2EX  ›  问与答

求问正则 关于获取 url 参数

  •  
  •   louieliu · Jul 20, 2020 · 2073 views
    This topic created in 2168 days ago, the information mentioned may be changed or developed.

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

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

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

    6 replies    2020-07-20 20:41:23 +08:00
    netnr
        1
    netnr  
       Jul 20, 2020
    这是传参没有编码,用 encodeURIComponent 处理一下
    TomatoYuyuko
        2
    TomatoYuyuko  
       Jul 20, 2020
    不用正则随便写了个,可以简化下。。
    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  
    PRO
       Jul 20, 2020
    按照 http 协议,你的第二种写法是四个参数,你看 chrome 就是按照四个参数解析的
    azh7138m
        5
    azh7138m  
       Jul 20, 2020
    不需要考虑这个问题。
    参数会被 encode,`sd&we` 实际会变为 `sd%26we`。
    ShundL
        6
    ShundL  
       Jul 20, 2020 via iPhone
    你如果要通过正则来做,可以用环视,顺序肯定,匹配&后面除&外需要有个等号。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2803 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 09:31 · PVG 17:31 · LAX 02:31 · JFK 05:31
    ♥ Do have faith in what you're doing.