这是我的设置:
var test =
"http://tv.website.com/video/8086844/randomstring/".match(/^.+tv.website.com\/video\/(.*\d)/);
我想提取视频ID(8086844)并且正则表达式确实有效,但是当在“randomstring”之后添加另一个数字时,它也匹配8086844 + randomstring +其他数字。
为了始终只获取视频ID,我需要更改什么。
答案 0 :(得分:1)
问题是(.*\d)
部分,它会查找以数字结尾的贪婪字符串,而不是video/
后需要一系列连续数字,可以通过(\d+)
完成
将其更改为
var test = "http://tv.website.com/video/8086844/randomstring/dd".match(/^.+tv.website.com\/video\/(\d+)/)[1];
答案 1 :(得分:1)
试试这个正则表达式
/^.+tv.website.com\/video\/([\d]+)/
它将在...video\
字后搜索每个数字字符,然后给出所有的一致数字,直到任何非数字字符出现
答案 2 :(得分: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
你快到了。我们知道,它只会是数字。因此,我们只收集数字并使用parens对它们进行分组,而不是.*\d
。
答案 3 :(得分:0)