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