louieliu
V2EX  ›  问与答

求问正则 关于获取 url 参数

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