从字符串中剥离ID

时间:2013-09-19 00:17:10

标签: javascript jquery string split slice

我需要一个可以从Vimeo和YouTube网址获取视频ID的功能。

我做了一些挖掘并找到了这些网址:

https://vimeo.com/30466080 
https://vimeo.com/30466080#t=0 
http://www.youtube.com/watch?feature=player_detailpage&v=My2FRPA3Gf8 http://www.youtube.com/watch?v=My2FRPA3Gf8 
//www.youtube.com/v/My2FRPA3Gf8?version=3&hl=en_GB 
//www.youtube-nocookie.com/v/My2FRPA3Gf8?version=3&hl=en_GB //www.youtube.com/embed/My2FRPA3Gf8

Vimeo,真的只有一种,总是在同一个位置。

但是,YouTube可以说他们的64位身份识别算法不会很快改变,因此11个字符的计数总是可以安全地假设。

我想知道解决这个问题的最佳方法是什么,而不是链接6或7个不同的if命令?

香农

3 个答案:

答案 0 :(得分:1)

请参阅JavaScript REGEX: How do I get the YouTube video id from a URL?

假设url是一个变量,将youtube视频网址保存为字符串:

url.match(/.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/)[1]

答案 1 :(得分:1)

这有点难看,但它抓住了以上所有的例子:

  function videoID(url) {
    return url.replace(/\\/g,'/').replace( /.*\//, '').replace(/#.*/, '').replace(/(.*\?v=|\?version=.*)/, '');
  }

答案 2 :(得分:0)

您可以尝试使用FaceOfJock提供的链接中使用的正则表达式,然后使用JavaScript RegExp对象应用它:

http://www.w3schools.com/jsref/jsref_obj_regexp.asp