如何从 JavaScript 中的 Vimeo URL 解析 ID?
该 URL 将由用户输入,因此我需要检查他们输入的格式是否正确。
我需要 ID 以便我可以使用他们的简单 API 来检索视频数据。
如何从 JavaScript 中的 Vimeo URL 解析 ID?
该 URL 将由用户输入,因此我需要检查他们输入的格式是否正确。
我需要 ID 以便我可以使用他们的简单 API 来检索视频数据。
regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/
parseUrl = regExp.exec url
return parseUrl[5]
这适用于所有遵循以下模式的有效 Vimeo URL:
http://vimeo.com/*
http://vimeo.com/channels/*/*
http://vimeo.com/groups/*/videos/*
由于 Vimeo 视频的 URL 由http://vimeo.com/
后跟数字 id 组成,因此您可以执行以下操作
var url = "http://www.vimeo.com/7058755";
var regExp = /http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/;
var match = url.match(regExp);
if (match){
alert("id: " + match[2]);
}
else{
alert("not a vimeo url");
}
如果您想先检查 Vimeo URL:
function getVimeoId( url ) {
// Look for a string with 'vimeo', then whatever, then a
// forward slash and a group of digits.
var match = /vimeo.*\/(\d+)/i.exec( url );
// If the match isn't null (i.e. it matched)
if ( match ) {
// The grouped/matched digits from the regex
return match[1];
}
}
例如
getVimeoId('http://vimeo.com/11918221');
返回
11918221
我认为 Matilda 是最好的答案,但它是一个非工作代码草案,所以将它与 Sean Kinsey 的答案合并,我们得到这个工作代码版本:
var url = "http://www.vimeo.com/7058755"; //Or any other Vimeo url format
var regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/;
var match = url.match(regExp);
if (match){
alert("id: " + match[5]);
}else{
alert("not a vimeo url");
}
var Vimeo =
{
get_video_id: function(url)
{
var regExp = /http(s)?:\/\/(www\.)?vimeo.com\/(\d+)(\/)?(#.*)?/
var match = url.match(regExp)
if (match)
return match[3]
},
get_video_url: function(id)
{
return 'https://vimeo.com/' + id
}
}
function getVimeoId(url) {
var m = url.match(/^.+vimeo.com\/(.*\/)?([^#\?]*)/);
return m ? m[2] || m[1] : null;
}
console.log(getVimeoId("http://vimeo.com/54178821"));
console.log(getVimeoId("http://vimeo.com/channels/nudiecutie/57383513"));
如果您只需要解析一个 Vimeo URL 就可以了,就像https://vimeo.com/407943692
您不需要正则表达式一样。这是更简单的imao:
let vimeoLink = "https://vimeo.com/407943692";
let url = new URL(vimeoLink);
//Remove leading /
let videoId = url.pathname.substring(1);
但是,用户经常会找到指向其他格式的链接,例如:
http://vimeo.com/423630
https://vimeo.com/1399176
http://vimeo.com/423630087
https://vimeo.com/423630087
https://player.vimeo.com/video/423630087
https://player.vimeo.com/video/423630087?title=0&byline=0&portrait=0
https://vimeo.com/channels/staffpicks/423630087
https://vimeo.com/showcase/7008490/video/407943692
这是我的解决方案,可以处理我发现的所有案例:
let regEx = /(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/?(showcase\/)*([0-9))([a-z]*\/)*([0-9]{6,11})[?]?.*/;
let match = mediaVideoLink.match(regEx);
if (match && match.length == 7) {
let videoId = match[6];
}
else {
//Handle error
}
来源:
我的 Javascript 解决方案:
function vimeo_parser(url){
// var regExp = /http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/;
var regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/;
var match = url.match(regExp);
return (match&&match[5])? match[5] : false;
}
我的 Angular 8 打字稿解决方案:
vimeo_parser(url){
// var regExp = /http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/;
var regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/;
var match = url.match(regExp);
return (match&&match[5])? match[5] : false;
}