2010-05-26 54 views
13

如何從JavaScript中的Vimeo URL解析ID?使用JavaScript解析Vimeo ID?

URL將由用戶輸入,因此我需要檢查他們是否以正確的格式輸入了該URL。

我需要這個ID,以便我可以使用他們簡單的API來檢索視頻數據。

回答

18

至於Vimeo的視頻的網址是由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"); 
} 
+0

以及「www。」是什麼? – myfreeweb 2010-05-26 20:47:47

+0

www現在也被允許 – 2010-05-26 21:01:37

+0

感謝這對我想要做的事很好。 – Tom 2010-05-27 07:02:24

2

當然。

您應該首先使用正則表達式檢查URL的有效性/完整性,並確保它與您期望的模式相匹配。 (更多關於regex'es here

接下來你需要這個ID號碼吧?假設它位於URL中,那麼也可以使用正則表達式提取它(backreference

這些都基本上是字符串和正則表達式處理。

+0

我需要讀入正則表達式,謝謝你的鏈接。 – Tom 2010-05-27 07:01:40

6

如果你想檢查Vimeo的網址第一:

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

這適用於所有有效的Vimeo網址,其中f ollows這些模式:

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

我覺得明德的是最好的答案,但它是一個非工作守則草案,所以肖恩·金賽的答案合併它我們得到這個工作代碼版本:

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