Как получить идентификатор видео YouTube с URL-адреса? - PullRequest
220 голосов
/ 10 августа 2010

Я хочу получить v=id из URL YouTube с помощью JavaScript (без jQuery, чистый JavaScript).

Примеры форматов URL YouTube

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

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

Или любой другой формат YouTube, который содержит идентификатор видео в URL.

Результат из этих форматов

u8nQa1cJyX8

Ответы [ 32 ]

1 голос
/ 04 июня 2018

Я сделал небольшую функцию для извлечения идентификатора видео из URL-адреса Youtube, который можно увидеть ниже.

var videoId = function(url) {
   var match = url.match(/v=([0-9a-z_-]{1,20})/i);
   return (match ? match['1'] : false);
};

console.log(videoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ'));
console.log(videoId('https://www.youtube.com/watch?t=17s&v=dQw4w9WgXcQ'));
console.log(videoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=17s'));

Эта функция извлекает идентификатор видео, даже если в URL есть несколько параметров.

0 голосов
/ 30 марта 2016

Как упомянуто в комментарии :

Это сработало, если видео начинается с "v" и оно с youtu.be

регулярное выражение содержит небольшую ошибку \??v?=? это должно быть только на смотреть часть, в противном случае вы бы отфильтровать 'v', если идентификатор начинается с 'v'. так что это должно сработать

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

0 голосов
/ 22 сентября 2013

Мы знаем, что эти символы "? V =" могут никогда не появляться больше, чем символы, но "v" может появляться как-то в самом Id, поэтому мы используем "? V =" в качестве разделителя. Посмотри Работаю здесь

//Get YouTube video Id From Its Url

     $('button').bind('click',function(){
var 
url='http://www.youtube.com/watch?v=u8nQa1cJyX8',
videoId = url.split('?v='),//Split data to two
YouTubeVideoId=videoId[1];
alert(YouTubeVideoId);return false;

});

<button>Click ToGet VideoId</button>
0 голосов
/ 14 августа 2018

Вы можете использовать следующий код, чтобы получить идентификатор видео YouTube из URL:

url = "https://www.youtube.com/watch?v=qeMFqkcPYcg"
VID_REGEX = /(?:youtube(?:-nocookie)?\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/
alert(url.match(VID_REGEX)[1]);
0 голосов
/ 18 января 2018

В C # это выглядит так:

public static string GetYouTubeId(string url) {
    var regex = @"(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?|watch)\/|.*[?&amp;]v=)|youtu\.be\/)([^""&amp;?\/ ]{11})";

    var match = Regex.Match(url, regex);

    if (match.Success)
    {
        return match.Groups[1].Value;
    }

    return url;
  }

Не стесняйтесь изменять.

0 голосов
/ 05 июня 2014

Простое регулярное выражение, если у вас есть полный URL, оставьте его простым.

results = url.match("v=([a-zA-Z0-9]+)&?")
videoId = results[1] // watch you need.
0 голосов
/ 19 апреля 2017

Я внес несколько небольших изменений в регулярное выражение Мантиша , чтобы включить все тестовые случаи из J W's и matx's ответов; так как это не сработало на всех из них изначально. Могут потребоваться дальнейшие изменения, но, насколько я могу судить, это по крайней мере охватывает большинство ссылок:

/(?:[?&]vi?=|\/embed\/|\/\d\d?\/|\/vi?\/|https?:\/\/(?:www\.)?youtu\.be\/)([^&\n?#]+)/

var url = ''; // get it from somewhere

var youtubeRegExp = /(?:[?&]vi?=|\/embed\/|\/\d\d?\/|\/vi?\/|https?:\/\/(?:www\.)?youtu\.be\/)([^&\n?#]+)/;
var match = url.match( youtubeRegExp );

if( match && match[ 1 ].length == 11 ) {
    url = match[ 1 ];
} else {
    // error
}

Для дальнейшего тестирования:

http://regexr.com/3fp84

0 голосов
/ 10 августа 2010

Ну, способ сделать это с помощью простого разбора: получить все, начиная с первого знака = до первого знака & .

Я думаю, у них был похожий ответ:

Разбор Vimeo ID с использованием JavaScript?

0 голосов
/ 07 сентября 2013
videoId = videoUrl.split('v=')[1].substring(0,11);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...