从youtube嵌入网址获取YouTube ID

时间:2018-09-17 05:33:11

标签: javascript jquery html regex

我只想从以下网址获得youtube ID

https://www.youtube.com/embed/cqyziA30whE?controls=1&showinfo=0&rel=0&autoplay=0&loop=0

 $(".youtube").click(function () {
       console.log(this.href.replace(new RegExp("embed\\/", "i"), 'embed/'));

 });

这使我获得整个网址,而当用户单击任何链接时,我只想获取YouTubeID cqyziA30whE

4 个答案:

答案 0 :(得分:2)

捕获一组/embed/之后的非问号字符,然后使用该捕获的组:

const str = 'https://www.youtube.com/embed/cqyziA30whE?controls=1&showinfo=0&rel=0&autoplay=0&loop=0';
console.log(
  str.match(/\/embed\/([^?]+)/)[1]
);

您也可以延迟重复任何字符,直到出现问号:

const str = 'https://www.youtube.com/embed/cqyziA30whE?controls=1&showinfo=0&rel=0&autoplay=0&loop=0';
console.log(
  str.match(/\/embed\/(.+)\?/)[1]
);

答案 1 :(得分:1)

Split()\分隔符的字符串,然后split()用分隔符?的结果,所需的结果是分割数组的第一个元素。

var string = "https://www.youtube.com/embed/cqyziA30whE?controls=1&showinfo=0&rel=0&autoplay=0&loop=0";
var words=string.split('/');
console.log(words[4].split('?')[0]);

答案 2 :(得分:1)

您可以使用RegEx groups并捕获它。

var url = 'https://www.youtube.com/embed/nrGk0AuFd_9?controls=1&showinfo=0&rel=0&autoplay=0&loop=0';
console.log(url.replace(new RegExp("^.*\/embed\/([a-zA-Z0-9_-]+)\?.*", "i"), '$1'));

答案 3 :(得分:0)

如果您想使用一种聪明的方法来避免RegExp,可以像这样使用HTMLHyperlinkElementUtils.pathname

const href = 'https://www.youtube.com/embed/cqyziA30whE?controls=1&showinfo=0&rel=0&autoplay=0&loop=0'
const a = document.createElement('a')

a.href = href

const id = a.pathname.split('/').pop()

console.log(id)

根据您的代码片段,您可以执行以下操作:

$(".youtube").click(function() {
  console.log(this.pathname.split('/').pop());
});