使用正则表达式提取数字

时间:2016-02-19 10:19:16

标签: javascript regex match

我有一个字符串:

name:demo;morestuff.nbvideo:3;morestuff_here:45

我需要从中提取nbvideo号码。我用2个正则表达式管理它,但我确信它只能在一个正则表达式中完成。

这就是我现在所拥有的:

// get the nbvideo:XX part
videoPart = sink.tag.match(/nbvideo:([0-9]+)/gi);
// get the number from the video part
videoCount = videoPart[0].match(/([0-9]+)/gi)[0];

如何使用一个正则表达式提取“nbvideo:”后面的数字?

1 个答案:

答案 0 :(得分:1)

从修饰符中删除g并访问第一个捕获组值,如下所示:

var sink_tag = "name:demo;morestuff.nbvideo:3;morestuff_here:45";
var m = sink_tag.match(/nbvideo:([0-9]+)/i);
if (m) {
   videoPart = m[1];
   document.body.innerHTML = videoPart; // demo
}

问题是如果全局修饰符与正则表达式一起使用,string#match不会保留捕获,并且看起来你输入中只有一个nbvideo:<NUMBER>。因此,删除/g似乎就足够了。否则,在循环中使用RegExp#exec()