【问题标题】:How to Parse Dailymotion Video Url in javascript如何在 JavaScript 中解析 Dailymotion 视频网址
【发布时间】:2012-09-05 10:14:52
【问题描述】:

我想解析 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的建议?

【问题讨论】:

    标签: javascript jquery regex string-parsing


    【解决方案1】:
    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"));
    

    与此同时,我学习了一些正则表达式。

    这是一个更新版本,它返回一个包含在文本中找到的任何 dailymotion id 的数组:

    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/ 输入文本框进行测试

    【讨论】:

    • 这适用于所有 dailymotion url 组合吗?例如有一个像dailymotion.com/hub/x9q_Galatasaray 这样的网址,这个reg exp 会解析videoid 吗?
    • 还有一个是这样的:dailymotion.com/video/xn1bi0_hakan-yukur-klip_sport 很抱歉一步步写了 url 组合。
    • dailymotion 现在具有http://dai.ly/x44lvd 格式,因此可能无法涵盖所有​​情况。会尽量更新答案。
    • 应更新以使用包含嵌入的链接,例如:dailymotion.com/embed/video/xq2cmn
    【解决方案2】:

    以下是处理非 /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"));
    

    【讨论】:

    • 不要使用包含嵌入的链接,例如:dailymotion.com/embed/video/xq2cmn
    • 只需使用 var m = url.match(/^.+dailymotion.com\/embed\/(video|hub)\/([^_]+)[^#]*(#视频=([^_&]+))?/);
    【解决方案3】:

    其他答案与所有​​dailymotion url都不匹配

    (如http://dai.ly/x2no31b

    使用这个正则表达式:

    ^(?:(?:http|https):\/\/)?(?:www.)?(dailymotion\.com|dai\.ly)\/((video\/([^_]+))|(hub\/([^_]+)|([^\/_]+)))$
    

    【讨论】:

      【解决方案4】:

      我用的是这个(包括像dai.ly/{videoId}这样的短网址):

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

      Debuggex Demo

      【讨论】:

        【解决方案5】:

        修复仅捕获视频 ID

        ^.*(?:dailymotion.com\/(?:video|hub)|dai.ly)\/([^_]+)[^#]*(#video=([^_&]+))?
        

        【讨论】:

          猜你喜欢
          • 2022-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多