1

这是我的设置:

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

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

为了始终获得视频 ID,我必须进行哪些更改。

4

4 回答 4

1

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

将其更改为

var test  = "http://tv.website.com/video/8086844/randomstring/dd".match(/^.+tv.website.com\/video\/(\d+)/)[1];
于 2013-09-07T14:28:08.640 回答
1

试试这个正则表达式

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

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

于 2013-09-07T14:28:11.150 回答
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我们不是只收集数字并使用括号对它们进行分组。

于 2013-09-07T14:33:33.323 回答
0

这是最简单的:

在这里使用substr

test.substr(28,7)

小提琴

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

于 2013-09-07T14:28:47.530 回答