正则表达式找到子串

时间:2018-03-21 20:59:43

标签: javascript regex string

我有一个看起来很喜欢这个

的字符串列表
"Heartbeats::hype-wss://vps-gb2.nsa.drw:7026"
"Heartbeats::hype-wss://vps-de7.nsa.drw:7026"
"Heartbeats::hype-wss://vps-gb3.nsa.drw:7006"
"Heartbeats::hype-wss://vps-de2.nsa.drw:7043"
"Heartbeats::hype-wss://vps-jp2.nsa.drw:7060"
"Heartbeats::hype-wss://vps-jp2.nsa.drw:7071"
"Heartbeats::hype-wss://vps-de3.nsa.drw:7055"
"Heartbeats::hype-wss://vps-de3.nsa.drw:7066"
"Heartbeats::hype-wss://vps-gb2.nsa.drw:7005"

我想获得gb2之后的子串de7gb3vps-等,以及最后的四位数字。在正则表达式中有没有一种干净的方法呢?

提前致谢

3 个答案:

答案 0 :(得分:3)

使用这些样本,这是另一种/(\w+\d)/g

说明: https://regex101.com/r/64MOHt/1

console.log("Heartbeats::hype-wss://vps-gb2.nsa.drw:7026".match(/(\w+\d)/g))
console.log("Heartbeats::hype-wss://vps-de7.nsa.drw:7026".match(/(\w+\d)/g))
console.log("Heartbeats::hype-wss://vps-gb3.nsa.drw:7006".match(/(\w+\d)/g))
console.log("Heartbeats::hype-wss://vps-de2.nsa.drw:7043".match(/(\w+\d)/g))
console.log("Heartbeats::hype-wss://vps-jp2.nsa.drw:7060".match(/(\w+\d)/g))
console.log("Heartbeats::hype-wss://vps-jp2.nsa.drw:7071".match(/(\w+\d)/g))
console.log("Heartbeats::hype-wss://vps-de3.nsa.drw:7055".match(/(\w+\d)/g))
console.log("Heartbeats::hype-wss://vps-de3.nsa.drw:7066".match(/(\w+\d)/g))
console.log("Heartbeats::hype-wss://vps-gb2.nsa.drw:7005".match(/(\w+\d)/g))
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

你可以轻松地做到:

vps-([^.]+)

表示:

  • vps-
  • 之后
  • (匹配
  • [^.]任何不是点的内容
  • +一次或多次

对于最后的数字,您可以使用以下内容进行扩展:

vps-([^.]+).*:(\d+)$
  • .*任何字符0次或更多次,直到......
  • :列和...
  • (\d+)匹配一个或多个整数
  • $后跟字符串结尾

答案 2 :(得分:0)

这对您有用:

.*vps-([^.]*)[^:]*:(\d*)

您必须获得组[0]和组[1]。

你可以在这里测试一下:

https://regex101.com/#javascript