从youtube获取YouTube ID嵌入网址[复制]

问题描述 投票:-1回答:4

这个问题在这里已有答案:

我想从以下网址获取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,这就得到了我的整个网址

javascript jquery html regex
4个回答
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'));

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
投票

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]);

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());
});
© www.soinside.com 2019 - 2024. All rights reserved.