在斜杠之间提取数字

这是我的设置:

var test = "http://tv.website.com/video/8086844/randomstring/".match(/^.+tv.website.com\/video\/(.*\d)/); 

我想提取videoID(8086844)并且正则表达式确实有效,但是当在“randomstring”之后添加另一个数字时,它也匹配8086844 + randomstring +其他数字。

我必须更改什么才能始终获得videoID。

试试这个正则表达式

 /^.+tv.website.com\/video\/([\d]+)/ 

它将搜索...video\ word之后的每个数字字符,然后给出所有的一致数字,直到任何非数字字符出现

问题是(.*\d)部分,它查找一个以数字结尾的贪婪字符串,而不是在video/之后需要一系列连续的数字,它可以通过(\d+)来完成

改为

 var test = "http://tv.website.com/video/8086844/randomstring/dd".match(/^.+tv.website.com\/video\/(\d+)/)[1]; 
 var test = "http://tv.website.com/video/8086844/randomstring/8"; test = test.match(/^.+tv.website.com\/video\/(\d+)/); console.log(test); console.log(test[1]); 

产量

 [ 'http://tv.website.com/video/8086844', '8086844', index: 0, input: 'http://tv.website.com/video/8086844/randomstring/8' ] 8086844 

你快到了。 我们知道,它只是数字。 因此,而不是.*\d我们只收集数字并使用parens对它们进行分组。

这是最简单的:

在这里使用substr

 test.substr(28,7) 

小提琴

从字符串测试中提取id :我们使用substr(from,to)