2010-05-26 35 views
13

Làm cách nào để phân tích cú pháp ID từ URL Vimeo trong JavaScript?Phân tích cú pháp ID Vimeo bằng JavaScript?

URL sẽ được người dùng nhập, vì vậy tôi sẽ cần phải kiểm tra xem họ đã nhập URL đó có đúng định dạng hay không.

Tôi cần ID để tôi có thể sử dụng API đơn giản của mình để truy xuất dữ liệu video.

Trả lời

18

Như URL cho video Vimeo được tạo thành bởi http://vimeo.com/ tiếp theo là id số, bạn có thể làm như sau

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

và về "www." Thì sao? – myfreeweb

+0

www bây giờ cũng được cho phép –

+0

Cảm ơn điều này hoạt động tốt cho những gì tôi muốn làm. – Tom

2

Chắc chắn.

Trước tiên, bạn nên kiểm tra tính hợp lệ/tính đúng đắn của URL bằng regex và đảm bảo nó phù hợp với mẫu bạn mong đợi. (Tìm hiểu thêm về regex'es here)

Tiếp theo bạn cần số ID đó, đúng không? Giả sử rằng nó nằm trong URL, bạn có thể trích xuất cũng bằng cách sử dụng một regex (backreference)

Đó là tất cả về cơ bản xử lý chuỗi và regex.

+0

Tôi cần đọc vào regex, cảm ơn các liên kết. – Tom

6

Nếu bạn muốn kiểm tra cho Vimeo URL đầu tiên:

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

Ví dụ:

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

lợi nhuận

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] 

này hoạt động với tất cả các URL Vimeo hợp lệ OLLOWS những mẫu:

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

Tôi nghĩ rằng Matilda là câu trả lời tốt nhất, nhưng đó là một dự thảo mã không làm việc, vì vậy việc sáp nhập nó với câu trả lời Sean Kinsey của chúng tôi nhận được phiên bản mã hoạt động này:

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"); 
} 
Các vấn đề liên quan