JavaScript 从URL获取YouTube视频ID

JavaScript 从URL获取YouTube视频ID

每个YouTube视频都有一个唯一的URL,我们可以通过浏览器访问它。每个YouTube视频都包含一个唯一的视频ID,这使得URL唯一。有时,开发者需要从YouTube URL中提取视频ID。

我们需要通过操作YouTube URL字符串来提取URL中的视频ID,在本教程中,我们将学习不同的方法来从完整URL中获取视频ID。

使用split()方法

JavaScript 包含内置的 split() 方法,允许用户使用特定的分隔符将字符串分割成多个部分。

split() 方法接受一个分隔符作为参数,通过该分隔符将字符串分割成多个部分,并返回包含字符串部分的数组。

语法

您可以按照以下语法使用 split() 方法从YouTube视频URL中提取视频ID。

var videoURL = "https://www.youtube.com/watch?v=IZ1GYnI9a5E&ab_channel=ShareAcademy";
var splited = videoURL.split("v=");
var splitedAgain = splited[1].split("&");
var videoId = splitedAgain[0]; 

在上述语法中,我们使用了split()方法多次来获取视频Id。

步骤

用户可以按照以下步骤使用split()方法从URL中提取视频Id。

步骤1 - 获取视频URL。

步骤2 - 通过“v=”分隔符拆分视频URL,这将返回一个长度为2的数组。数组的第二个值包含视频Id。

步骤3 - 现在,使用“&”作为分隔符拆分数组的第二个值,这也会将该值拆分为两个部分。

步骤4 - splitedAgain数组的第一个值包含视频Id。

示例

在下面的示例中,我们取了YouTube视频URL。然后,我们使用上述步骤,并多次使用不同的分隔符拆分URL,以从URL中获取视频Id。

此外,在输出中,用户可以观察到存储在split和splitedAgain数组中的值。

<html>
<body>
   <h3>Getting the video ID from the YouTube videoURL using the <i> split() </i> Method.</h3>
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");

      // defining the videoURL
      var videoURL ="https://www.youtube.com/watch?v=IZ1GYnI9a5E&ab_channel=ShareAcademy";

      // split URL via 'v=' delimiter
      var splited = videoURL.split("v=");

      //output.innerHTML += "The values of splited is " + splited + "</br>"

      // take the value from the first index of splited, and split it via '&'.
      var splitedAgain = splited[1].split("&");

      //output.innerHTML += "The values of splitedAgain is " + splitedAgain + "</br>"

      // get the value from 0th index from splitedAgain array
      var videoId = splitedAgain[0];
      output.innerHTML += "Video URL: <br>" + videoURL + "<br><br>";
      output.innerHTML += "Video id: " + videoId;
   </script>
</body>
</html>

使用正则表达式

正则表达式是一种搜索模式,允许我们在字符串中搜索特定的模式。在这里,我们将搜索视频URL中的视频ID。每个YouTube URL在“v=”子字符串后面都包含视频ID。因此,我们可以使用正则表达式找到该模式并得到视频ID。

语法

用户可以按照以下语法使用正则表达式从YouTube视频URL中提取视频ID。

var videoURL = "https://www.youtube.com/watch?v=IZ1GYnI9a5E&ab_channel=ShareAcademy";
let regex = /(youtu.*be.*)\/(watch\?v=|embed\/|v|shorts|)(.*?((?=[&#?])|$))/gm;
var videoId = regex.exec(videoURL)[3]; 

在上面的语法中,我们使用 exec() 方法,通过使用正则表达式作为参考来找到匹配正则表达式模式的结果。

正则表达式解释

  • (youtu.*be.*) − 它匹配HTTPS后的youtube域名。
  • /(watch\?v=|embed\/|v|shorts|) − 它匹配域名后的/watch,或域名后的v=,或嵌入或短裤或仅v。这里,|表示OR操作。
  • (.*?((?=[&#?])|$)) − 它匹配包含id的不同字符串字符。
  • gmg标志用于匹配所有出现的情况,m标志用于匹配多行。

示例

在下面的例子中,我们创建了上面解释的正则表达式,并通过将其作为引用来调用exec()方法。此外,我们将videoURL作为exec()方法的参数传递,以匹配正则表达式中定义的模式与视频URL。

exec()方法根据正确的YouTube URL返回4个不同的匹配项,最后一个值只包含视频id。

<html>
<body>
   <h3>Getting the video ID from the YouTube videoURL using the <i> regular expression</i></h3>
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");

      // defining the videoURL
      var videoURL = "https://www.youtube.com/watch?v=IZ1GYnI9a5E&ab_channel=ShareAcademy";

      // defining the regular expression
      let regex = /(youtu.*be.*)\/(watch\?v=|embed\/|v|shorts|)(.*?((?=[&#?])|$))/gm;
      var allMathces = regex.exec(videoURL);

      // Matching the values
      var videoId = allMathces[3];
      output.innerHTML += "Video URL: <br>" + videoURL + " <br> ";
      output.innerHTML += "Video id: " + videoId;
   </script>
</body>
</html>

用户学会了从YouTube视频URL中提取视频id。我们刚刚使用了字符串并使用了不同的字符串方法来提取视频id。在第一种方法中,我们使用了两次split()方法。此外,用户可以先使用split()方法,然后再使用substr()方法,而不是两次使用split()方法。

在第二种方法中,用户可以在正则表达式中使用match()方法,而不是exec()方法。因此,用户可以尝试不同的方法,如学习新东西。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程