31

URLからvimeoビデオIDを取得するのに最適な正規表現を見つけようとしています。

URL の例:

https://vimeo.com/11111111
http://vimeo.com/11111111
https://www.vimeo.com/11111111
http://www.vimeo.com/11111111
https://vimeo.com/channels/11111111
http://vimeo.com/channels/11111111
https://vimeo.com/groups/name/videos/11111111
http://vimeo.com/groups/name/videos/11111111
https://vimeo.com/album/2222222/video/11111111
http://vimeo.com/album/2222222/video/11111111
https://vimeo.com/11111111?param=test
http://vimeo.com/11111111?param=test

動作しない私の現在の正規表現:

/http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/

プレイグラウンドとテストはこちら: http://jsbin.com/asuqic/1/edit?javascript,live

4

5 に答える 5

43

更新:この回答は、(投票やコメントを通じて)時々注目を集めていることに気付きました。回答は 2 年以上前のものであり、サポートされている URL の種類が最新ではない可能性があります。私はこの正規表現を積極的に維持するつもりはありません。これは単に質問への回答として意図されているため、そこにリストされている形式のみを処理します。これは自己責任で使用してください。または、URL 形式の最新の包括的なリストに基づいて独自の正規表現を開発するための出発点としてのみ使用してください。

API ソリューションについては、@l2aelba の回答を参照してください https://stackoverflow.com/a/37695721/622813


これは完全な正規表現であり、形式が正しいことも保証します。

/https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/

キャプチャ グループのグループ名1(存在する場合)、キャプチャ グループのアルバム ID 2(存在する場合)、およびキャプチャ グループのビデオ ID 3(常に) を取得できるようになりました。

デモ

于 2012-11-08T10:13:55.643 に答える
4
var r = /(videos|video|channels|\.com)\/([\d]+)/,
    a = "https://vimeo.com/album/2222222/video/11111111";

console.log(a.match(r)[2]); // 11111111;

http://jsbin.com/asuqic/7/edit

于 2012-11-08T10:09:40.770 に答える
3

次の正規表現は、この情報のみを取得したい人のために、グループ 1 の ID を返します。質問に記載されているすべての URL の例で機能します。と がなくても機能http://https://ます。次のような URL でも機能します。player.vimeo.com/...

/^.*(?:vimeo.com)\\/(?:channels\\/|groups\\/[^\\/]*\\/videos\\/|album\\/\\d+\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/
于 2014-02-27T14:15:39.690 に答える
0

PHPの場合、以下のコードは次のURLで機能します

すなわち:

http://vimeo.com/88888888
http://player.vimeo.com/video/88888888
http://vimeo.com/channels/staffpicks/88888888
http://vimeo.com/groups/groupsname/88888888

PHPコード:

    $vimeoUrl = 'http://vimeo.com/channels/channelsName/11111111';
    $fetchVimeoIdArr = explode('/', $vimeoUrl);
    $idCounter = count($fetchVimeoIdArr) - 1;
    $vimeoId = $fetchVimeoIdArr[$idCounter];
于 2016-03-11T07:25:36.627 に答える