javascript - 使用正则表达式提取数字

标签 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:”后面的数字?

最佳答案

删除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/

相关文章:

javascript - 在异步函数中运行并发 HTTP 请求

用于以 '-' 字符开头的数字输入的 Java 正则表达式是可接受的

Python - 正则表达式 - 匹配某些字符之间的字符

jQuery html 选择器从本地文件系统加载网页时成功,但在线加载时失败

javascript - 在 DOM 加载后添加到 DOM 时,HTML Textarea 不允许我输入内容

javascript - 从串行端口 -> Chrome 应用程序 -> 网页进行通信。网页启动。

python - 什么 Python 正则表达式匹配所有字母字符但不匹配数字? [unicode 感知]

c++ - 匹配由符号分隔并忽略空格的重复单词

Mysql全文搜索match()过滤特定符号

javascript - 使用 Webpack 捆绑 ES6 类。有没有办法提升扩展类(class)?