适用于YouTube ID的正则表达式

Sta*_*ley 19 javascript regex youtube video

我已经看了很多,我已经看到很多方法可以解析youtube的网址上的视频ID,但是,没有一个方法可以匹配YouTube网址所能提供的各种格式.我已经尝试过搞乱使用正则表达式在之前的帖子中,但似乎没有任何效果.

我发现最接近所有URL格式的帖子是这样的:如何使用正则表达式在字符串中找到所有YouTube视频ID?

但是,这不适用于:http: //www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/FJUvudQsKCM

我在Javascript中这样做.有人可以帮忙吗?!

Thanx提前.

我正在使用的当前URL格式和脚本:

var url = "http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/FJUvudQsKCM";
//var url = "http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo";
//var url = "http://youtu.be/NLqAF9hrVbY";
//var url = "http://www.youtube.com/embed/NLqAF9hrVbY";
//var url = "https://www.youtube.com/embed/NLqAF9hrVbY";
//var url = "http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US";
//var url = "http://www.youtube.com/watch?v=NLqAF9hrVbY";
//var url = "http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo";
//var url = "http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I";
//var url = "http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo";
//var url = "http://www.youtube.com/watch?v=JYArUl0TzhA&feature=featured";

var videoID = url.match(/(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/user\/\S+|\/ytscreeningroom\?v=))([\w\-]{10,12})\b/)[1];
alert(videoID);
Run Code Online (Sandbox Code Playgroud)

Ben*_*jam 51

这是一个重复的问题,之前已经得到了回答.

我想你会发现regexp也会在这里工作.

使用preg_match解析youtube视频ID

编辑:我注意到它不适用于列表顶部的sandalsResort URL,因此您可以将正则表达式修改为以下内容(转换为在JS中使用)

var myregexp = /(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i;
Run Code Online (Sandbox Code Playgroud)

我所做的只是更换user[^/]+

该ID仍在后向引用1中捕获.

  • 因为我不在乎那么多?9年前,当我回答这个问题时,我还没有达到关闭它所需的积分。 (3认同)
  • 如果您想要“-nocookie”选项 /(?:youtube(?:-nocookie)?\.com\/(?:[^\/]+\/.+\/|(?:v|e( ?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/gi; (2认同)

Mac*_*ski 5

我使用此正则表达式:/youtu(?:.*\/v\/|.*v\=|\.be\/)([A-Za-z0-9_\-]{11})/它对我来说很好用。