Разбор Vimeo ID с использованием JavaScript? - PullRequest
14 голосов
/ 27 мая 2010

Как мне разобрать идентификатор из URL Vimeo в JavaScript?

URL будет введен пользователем, поэтому мне нужно проверить, что они ввели его в правильном формате.

Мне нужен идентификатор, чтобы я мог использовать их простой API для извлечения видеоданных.

Ответы [ 7 ]

21 голосов
/ 27 мая 2010

Поскольку URL-адреса для видео Vimeo состоят из http://vimeo.com/, за которым следует числовой идентификатор, вы можете сделать следующее

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");
}
16 голосов
/ 26 июля 2012
regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/
parseUrl = regExp.exec url
return parseUrl[5]

Это работает для всех действительных URL-адресов Vimeo, следующих следующим шаблонам:

http://vimeo.com/*

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

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

7 голосов
/ 27 мая 2010

Если вы хотите сначала проверить URL 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 голосов
/ 24 июля 2015

Я думаю, что ответ Матильды - лучший вариант, но это неработающий черновик кода, поэтому, объединив его с ответом Шона Кинси, мы получим версию рабочего кода:

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");
}
2 голосов
/ 11 апреля 2013
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"));
2 голосов
/ 06 апреля 2012
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
    }
}
2 голосов
/ 27 мая 2010

Конечно.

Сначала вы должны проверить правильность / корректность URL с помощью регулярного выражения и убедиться, что он соответствует шаблону, который вы ожидаете. (Подробнее о регулярных выражениях здесь )

Далее вам нужен этот идентификационный номер, верно? Предполагая, что он находится в URL, вы можете извлечь его также с помощью регулярного выражения ( обратная ссылка )

Это всего лишь обработка строк и регулярных выражений.

...