Разбор идентификатора Vimeo с использованием JavaScript?

Как анализировать идентификатор из URL-адреса Vimeo в JavaScript?

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

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

Ответы

Ответ 1

Поскольку 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");
}

Ответ 2

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/*

Ответ 3

Если вы хотите сначала проверить 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

Ответ 4

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

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

Ответ 5

Конечно.

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

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

Все это просто управление строкой и регулярным выражением.

Ответ 6

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

Ответ 7

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

Ответ 8

Мое решение 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;
  }

Мое машинописное решение для угловых 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;
  }