4

以下のように、DailymotionのビデオURLを解析して、JavaScriptでビデオIDを取得したいと思います。

http://www.dailymotion.com/video/x44lvd

ビデオID:「x44lvd」

すべてのdailymotionビデオURLの組み合わせのビデオIDを取得するには、正規表現文字列が必要だと思います。

YouTubeリンクのURLパーサー正規表現を見つけました。以下のようにうまく機能しています。

var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
    var match = url.match(regExp);
    var videoID = "";
    if (match && match[7].length == 11){
        videoID = match[7];
    }else
       alert('video not found');

誰かがdailymotionについてアドバイスをくれませんか?

4

5 に答える 5

13
function getDailyMotionId(url) {
    var m = url.match(/^.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/);
    if (m !== null) {
        if(m[4] !== undefined) {
            return m[4];
        }
        return m[2];
    }
    return null;
}

console.log(getDailyMotionId("http://www.dailymotion.com/video/x44lvd_rates-of-exchange-like-a-renegade_music"));
console.log(getDailyMotionId("http://www.dailymotion.com/video/x44lvd"));
console.log(getDailyMotionId("http://www.dailymotion.com/hub/x9q_Galatasaray"));
console.log(getDailyMotionId("http://www.dailymotion.com/hub/x9q_Galatasaray#video=xjw21s"));
console.log(getDailyMotionId("http://www.dailymotion.com/video/xn1bi0_hakan-yukur-klip_sport"));

その間に、いくつかの正規表現を学びました。

これは、テキストで見つかったdailymotionIDの配列を返す更新バージョンです。

function getDailyMotionIds(str) {
    var ret = [];
    var re = /(?:dailymotion\.com(?:\/video|\/hub)|dai\.ly)\/([0-9a-z]+)(?:[\-_0-9a-zA-Z]+#video=([a-z0-9]+))?/g;     
    var m;

    while ((m = re.exec(str)) != null) {
        if (m.index === re.lastIndex) {
            re.lastIndex++;
        }
        ret.push(m[2]?m[2]:m[1]);
    }
    return ret;
}

ここでテストしますhttp://jsfiddle.net/18upkjaa/embedded/result/テキストボックスに入力して

于 2012-09-12T12:11:51.750 に答える
4

最後のパスのように/video/または/hub/以外のパスを処理するための小さな更新を次に示します。

function getDailyMotionId(url) {
    var m = url.match(/^.+dailymotion.com\/((video|hub)\/([^_]+))?[^#]*(#video=([^_&]+))?/);
    return m ? m[5] || m[3] : null;
}

console.log(getDailyMotionId("http://www.dailymotion.com/video/x44lvd_rates-of-exchange-like-a-renegade_music"));
console.log(getDailyMotionId("http://www.dailymotion.com/video/x44lvd"));
console.log(getDailyMotionId("http://www.dailymotion.com/hub/x9q_Galatasaray"));
console.log(getDailyMotionId("http://www.dailymotion.com/hub/x9q_Galatasaray#video=xjw21s"));
console.log(getDailyMotionId("http://www.dailymotion.com/video/xn1bi0_hakan-yukur-klip_sport"));

// non /video/ or /hub/ url:
console.log(getDailyMotionId("http://www.dailymotion.com/fr/relevance/search/gangnam+style/1#video=xsbwie"));
于 2013-04-11T06:32:33.260 に答える
0

他の人の答えはすべてのdailymotionのURLと一致しません

http://dai.ly/x2no31bのように)

この正規表現を使用してください:

^(?:(?:http|https):\/\/)?(?:www.)?(dailymotion\.com|dai\.ly)\/((video\/([^_]+))|(hub\/([^_]+)|([^\/_]+)))$
于 2017-08-24T16:22:26.273 に答える
0

私はこれを使用します(のような短いURLをカバーしますdai.ly/{videoId}):

^(?:(?:https?):)?(?:\/\/)?(?:www\.)?(?:(?:dailymotion\.com(?:\/embed)?\/video)|dai\.ly)\/([a-zA-Z0-9]+)(?:_[\w_-]+)?$

Debuggexデモ

于 2018-06-01T13:36:54.003 に答える
0

ビデオIDのみをキャプチャするための修正

^.*(?:dailymotion.com\/(?:video|hub)|dai.ly)\/([^_]+)[^#]*(#video=([^_&]+))?
于 2021-07-13T22:28:47.510 に答える