如何使用匹配和正则表达式从此字符串中提取确切值?

How to extract exact value from this string with match and regex?

嗨,

我有这个字符串:

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

我只想得到 =room 之后的内容,不管它的位置如何,所以我尝试了这个:

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

但是我得到这个 ["?room=room2"] 而预期的输出只是 2。请看这个fiddle:https://jsfiddle.net/8fduhLep/

我在这里错过了什么?

谢谢。

** 已更新 **

如果您想要 =room 后面的数字 - 就可以了

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]+/,'');

您可以使用 substringindexOf:

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)