代码之家  ›  专栏  ›  技术社区  ›  Cain Nuke

如何使用match和regex从该字符串中提取精确值?

  •  1
  • Cain Nuke  · 技术社区  · 3 年前

    你好

    var referer = "https://example.net:3000/page?room=room2"
    

    我只想得到后面的东西 =room 无论它的位置如何,所以我尝试了以下方法:

    var value = referer.match(/[?&;](.+?)=([^&;]+)/g);
    

    但我明白了 ["?room=room2"] 2 . 请看这把小提琴: https://jsfiddle.net/8fduhLep/

    我错过了什么?

    非常感谢。

    2 回复  |  直到 3 年前
        1
  •  2
  •   Spectric amamoto    3 年前

    你可以用 substring indexOf :

    var referer = "https://example.net:3000/page?room=room2"
    
    const res = referer.substring(referer.indexOf('=room') + 5) //add 5 to account for length of string
    console.log(res)

    如果它不是唯一的参数,您可以解析URL并获取 room 参数,然后使用上述方法:

    var referer = "example.net:3000/page?room=room2&someotherquery=something"
    
    
    var roomVal = new URL("https://example.net:3000/page?room=room2").searchParams.get('room')
    const res = roomVal.substring(roomVal.indexOf('=room') + 5)
    console.log(res)

    var referer = "example.net:3000/page?room=room2&someotherquery=something"
    
    const regex = /room=room(\w+)/g
    const res = regex.exec(referer)[1]
    
    console.log(res)
        2
  •  1
  •   user2182349    3 年前

    **更新**

    如果你想知道=房间后面的数字,这就行了

    let value = referer.match(/=room(\d+)/);
    

    [
      '=room2',
      '2',
      index: 34,
      input: 'https://example.net:3000/page?room=room2',
      groups: undefined
    ]
    

    更好的解决办法是

    let url = new URL(referer);
    let roomNumber = url.searchParams.get('room').replace(/[^\d]+/,'');