L'analisi di un ID Vimeo utilizzando Javascript?
-
04-10-2019 - |
Domanda
Come faccio analizzare un ID da un URL Vimeo in JavaScript?
L'URL verrà inserito da un utente, quindi ho bisogno di verificare che sono entrati nel formato corretto.
Ho bisogno della ID in modo che possa usare la loro semplice API per recuperare i dati video.
Soluzione
Come gli URL per i video Vimeo sono costituiti da http://vimeo.com/
seguito dal ID numerico, è possibile effettuare le seguenti operazioni
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");
}
Altri suggerimenti
regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/
parseUrl = regExp.exec url
return parseUrl[5]
Questo funziona per tutti gli URL Vimeo validi che segue questi modelli:
http://vimeo.com/*
http://vimeo.com/channels/*/*
http://vimeo.com/groups/*/videos/*
Se si desidera verificare la presenza di Vimeo URL prima:
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];
}
}
per es.
getVimeoId('http://vimeo.com/11918221');
ritorna
11918221
Credo che Matilda è la risposta migliore, ma è un progetto non-lavoro di codice, quindi la fusione con la risposta di Sean Kinsey otteniamo questa versione il codice di lavoro:
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");
}
Certo.
Si dovrebbe prima verificare la validità / sanità mentale del URL con un espressione regolare e assicurarsi che corrisponda al modello che ci si aspetta. (Più su regex'es qui )
È poi necessario che il numero ID, giusto? Supponendo che è situato all'interno della URL, è possibile estrarre che anche utilizzando un espressione regolare ( backreference )
E 'tutto solo fondamentalmente stringa e la manipolazione regex.
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"));
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
}
}
La mia soluzione 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;
}
La mia soluzione dattiloscritto per angolare 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;
}