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.

È stato utile?

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;
  }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top