拆分youtube视频网址

时间:2015-05-29 06:12:00

标签: javascript jquery youtube

我需要从youtube视频网址获取ID。我正在使用split方法但在控制台中它会出现以下错误

  

未捕获的TypeError:无法读取属性' split'未定义的

我的视频网址是: https://www.youtube.com/embed/juIJGBxj-4w

我的代码是

id = url.split('/')[1].split('embed')[1];

5 个答案:

答案 0 :(得分:3)

  

正则表达式将从任何YouTube网址中提取视频ID   它适用于缩短的URL(youtu.be)和嵌入的URL   (youtube.com/embed/)。

 function extractVideoID(url){
        var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
        var match = url.match(regExp);
        if ( match && match[7].length == 11 ){
            return match[7];
        }else{
            alert("Could not extract video ID.");
        }
    }

答案 1 :(得分:0)

forExample youtube url为“https://www.youtube.com/watch?v=abcdefghij

我将使用以下代码将其拆分

id = url.split('?')[1].split('=')[1];

答案 2 :(得分:0)

url = "https://www.youtube.com/embed/juIJGBxj-4w"
id = url.split('/');
var indexOfEmbed = id.indexOf("juIJGBxj-4w");
id[indexOfEmbed]

<强>输出:

&#34; juIJGBxj-4W&#34;

此解决方案适用于使用正则表达式的所有网址:

var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
var match = url.match(regExp);
if (match && match[2].length == 11) {
  return match[2]; // use console.log if your run code in browser console 
} else {
  //error
}

此解决方案适用于没有正则表达式的所有网址:

对于此类网址

http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW

http://www.youtube.com/watch?v=u8nQa1cJyX8

 var url ="http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW"

 var video_id = window.location.search.split('v=')[1];// use url insted of window.location.search

Or 

 var video_id = url.split('v=')[1];
    var ampersandPosition = video_id.indexOf('&');
    if(ampersandPosition != -1) {
      video_id = video_id.substring(0, ampersandPosition);
    }

答案 3 :(得分:0)

这个问题比看起来更复杂,因为www.youtube.com/watch?v=.....所有Youtube网址都不会轻易开始。有些网站的模式有www.youtu.be/...youtube.com/embed/...

这是我使用的解析器,到目前为止,它每次都适用于任何Youtube网址:

videoId = url.match(/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i)[0]

答案 4 :(得分:0)

假设id总是到底。

function getId(url){
    var splitedValue = url.split("/");
    return splitedValue[splitedValue.length-1];
}

getId("https://www.youtube.com/embed/juIJGBxj-4w");

Output: juIJGBxj-4w