20

JavaScriptでVimeoURLからIDを解析するにはどうすればよいですか?

URLはユーザーが入力するので、正しい形式で入力されていることを確認する必要があります。

シンプルなAPIを使用して動画データを取得できるようにIDが必要です。

4

9 に答える 9

24
regExp = /^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/
parseUrl = regExp.exec url
return parseUrl[5]

これは、次のパターンに従うすべての有効なVimeoURLで機能します。

http://vimeo.com/*

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

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

于 2012-07-26T00:41:59.730 に答える
22

Vimeo ビデオの URL は、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");
}
于 2010-05-26T20:44:18.313 に答える
8

最初に Vimeo URL を確認する場合:

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
于 2010-05-26T20:41:48.687 に答える
4

マチルダのが最良の答えだと思いますが、これは機能しないコード ドラフトであるため、Sean Kinsey の回答とマージすると、この機能するコード バージョンが得られます。

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");
}
于 2015-07-24T18:53:02.770 に答える
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
    }
}
于 2012-04-06T10:03:35.830 に答える
2
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"));
于 2013-04-11T07:28:04.093 に答える
2

もちろん。

最初に正規表現を使用して URL の有効性/健全性をチェックし、期待するパターンと一致することを確認する必要があります。(正規表現についての詳細はこちら)

次にそのID番号が必要ですよね?URL 内にあると仮定すると、正規表現 ( backreference )を使用して抽出することもできます。

基本的には、文字列と正規表現の処理だけです。

于 2010-05-26T20:35:14.977 に答える
1

Vimeo の URL を解析するだけでよければ、https://vimeo.com/407943692正規表現は必要ありません。これはより単純です:

let vimeoLink = "https://vimeo.com/407943692";
let url = new URL(vimeoLink);
//Remove leading /
let videoId = url.pathname.substring(1);

ただし、ユーザーは次のような他の形式へのリンクを見つけることがよくあります。

http://vimeo.com/423630
https://vimeo.com/1399176
http://vimeo.com/423630087
https://vimeo.com/423630087
https://player.vimeo.com/video/423630087
https://player.vimeo.com/video/423630087?title=0&byline=0&portrait=0
https://vimeo.com/channels/staffpicks/423630087
https://vimeo.com/showcase/7008490/video/407943692

これは、私が見つけたすべてのケースを処理する私のソリューションです:

let regEx = /(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/?(showcase\/)*([0-9))([a-z]*\/)*([0-9]{6,11})[?]?.*/;
let match = mediaVideoLink.match(regEx);
if (match && match.length == 7) {
    let videoId = match[6];
}
else {
    //Handle error
}

ソース:

https://stackoverflow.com/a/65845916/3850405

于 2021-01-22T13:37:42.443 に答える