如何从网址获取youtube视频ID

xor*_*zor 15 javascript youtube jquery

我正在尝试检查网址是否是有效的YouTube视频网址,并从中获取youtube视频ID,到目前为止我使用的是一个简单的javascript拆分功能以实现此目的,但是由于youtube有多个网址,因此这有一些小的缺点.

我一直在查看其他stackoverflow线程,但是它们只支持1个特定的URL,这不是我需要的.

我需要一些匹配所有这些URL的东西:

HTTP(S)://www.youtu.be/videoID

HTTP(S)://www.youtube.com/watch V = VIDEOID

(以及脚本自动检测是否包含youtube视频的任何其他短URL)

任何可以由浏览器快速/高效处理的想法都非常感谢!

The*_*ask 49

试试这个:

var url = "...";
var videoid = url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);
if(videoid != null) {
   console.log("video id = ",videoid[1]);
} else { 
    console.log("The youtube url is not valid.");
}
Run Code Online (Sandbox Code Playgroud)

看正则表达式:

/
(?:https?:\/{2})? // Optional protocol, if have, must be http:// or https://
(?:w{3}\.)?      // Optional sub-domain, if have, must be www.
youtu(?:be)?  // The domain. Match 'youtu' and optionally 'be'. 
\.(?:com|be) // the domain-extension must be .com or .be
(?:\/watch\?v=|\/)([^\s&]+) //match the value of 'v' parameter in querystring from 'watch' directory OR after root directory, any non-space value.
/
Run Code Online (Sandbox Code Playgroud)

  • @xorinzor:我添加了一个简单的正则表达式解释. (2认同)
  • 人们怎么写这个冗长的正则表达式? (2认同)

edo*_*rwi 8

也许您应该查看Youtube API并尝试通过API解析URL来查看是否有办法获取videoID.

看看这篇SO帖子: Youtube API - 提取视频ID


fro*_*sty 5

这可能很快:

var url = 'http://www.youtu.be/543221'; 
         //http://www.youtube.com/watch?v=SNfYz6Yw0W8&feature=g-all-esi would work also
var a = url.split("v=")[1];
a = a != undefined ? a : url.split("youtu.be/")[1];
b = a.split("&")[0];
Run Code Online (Sandbox Code Playgroud)

变量c将具有您的ID.快.正则表达式更好......但更难阅读.我修改了我的代码以解决这两个问题.