2010-05-26 21 views
13

¿Cómo puedo analizar una ID de una URL de Vimeo en JavaScript?Analizando una identificación de Vimeo usando JavaScript?

La URL será ingresada por un usuario, por lo que tendré que verificar que la haya ingresado en el formato correcto.

Necesito la identificación para que pueda usar su API simple para recuperar datos de video.

Respuesta

18

Como URL de vídeos Vimeo están compuestos por http://vimeo.com/ seguido de la identificación numérica, se puede hacer la siguiente

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"); 
} 
+0

y ¿qué pasa con "www."? – myfreeweb

+0

www ahora también está permitido –

+0

Gracias esto funciona bien para lo que quiero hacer. – Tom

2

Sure.

Primero debe verificar la validez/cordura de la URL con una expresión regular y asegúrese de que coincida con el patrón que espera. (Más sobre regex'es here)

Ahora necesita ese número de identificación, ¿verdad? Asumiendo que está ubicado dentro de la URL, puede extraer eso también usando una expresión regular (backreference)

Todo es básicamente manejo de cadenas y expresiones regulares.

+0

Necesito leer en expresiones regulares, gracias por los enlaces. – Tom

6

Si desea comprobar si hay Vimeo URL primera:

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

P. ej

getVimeoId('http://vimeo.com/11918221'); 

vuelve

11918221 
2
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 
    } 
} 
14
regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/ 
parseUrl = regExp.exec url 
return parseUrl[5] 

Este funciona para todas las URL válidas de Vimeo que f ollows estos patrones:

http://vimeo.com/*

http://vimeo.com/channels/*/*

http://vimeo.com/groups/*/videos/*

1
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")); 
1

Creo Matilde es la mejor respuesta, pero es un proyecto de código que no funciona, por lo que su fusión con la respuesta de Sean Kinsey obtenemos esta versión de código de trabajo:

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"); 
} 
Cuestiones relacionadas