我有一个字符串:
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:”后面的数字?
最佳答案
删除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()
循环中。
关于javascript - 使用正则表达式提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35502798/