繁体   English   中英

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

[英]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 请看这个小提琴: https : //jsfiddle.net/8fduhLep/

我在这里缺少什么?

谢谢你。

您可以使用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)

** 更新 **

如果您想要 =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]+/,'');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM