【问题标题】:how to check the valid Youtube url using jquery如何使用 jquery 检查有效的 Youtube url
【发布时间】:2011-01-16 10:45:51
【问题描述】:

在 Jquery 中,我想单独检查来自 youtube 的特定 url 并显示成功状态,而其他我想通过将其声明为无效 url 来跳过

var _videoUrl = "youtube.com/watch?v=FhnMNwiGg5M";
if (_videoUrl.contains("youtube.com"))
{
  alert('Valid'); 
} 
else
{ 
  alert('Not Valid');
} 

如何检查包含。或任何其他单独检查有效 youtube url 的选项。

【问题讨论】:

  • 你认为什么是“有效的”?例如,它在 URL 中具有正确的格式,或者该链接实际上有一个视频?

标签: javascript jquery


【解决方案1】:

我从闭包库中找到了这个,可能很方便:

/**
 * A youtube regular expression matcher. It matches the VIDEOID of URLs like
 * http://www.youtube.com/watch?v=VIDEOID.
 * @type {RegExp}
 * @private
 */
goog.ui.media.YoutubeModel.matcher_ =
    /https?:\/\/(?:[a-zA_Z]{2,3}.)?(?:youtube\.com\/watch\?)((?:[\w\d\-\_\=]+&(?:amp;)?)*v(?:<[A-Z]+>)?=([0-9a-zA-Z\-\_]+))/i;

【讨论】:

  • youtu.be 短网址怎么样?
【解决方案2】:

通常,大多数人想要的是 youtube 视频 ID。要简单地匹配它,请使用以下正则表达式。

var matches = _videoUrl.match(/watch\?v=([a-zA-Z0-9\-_]+)/);
if (matches)
{
    alert('valid');
}

当然,正则表达式可以扩展为包含整个 youtube 网址,但如果您只需要 ID,这是我找到的最可靠的方法。

【讨论】:

  • 不要忘记视频 ID 总是 11 个字符长......您必须检查视频 ID 长度是否为 11。
  • 很高兴知道,虽然我倾向于允许任何长度,因为如果 ID 用完 ID 长度可能会改变。
  • YouTube 开发者声明他们不保证保持 11 个字符的长度:link
  • @ÁxelCostasPena 是对的 - 但即使他们没有这么说 - 52 036 560 683 837 093 888(52 万亿)似乎是一个很大的数字,但因为越来越多的人使用 youtube 并且越来越多人们上传... YouTube 与我们在一起很长一段时间... 我们很容易在几年内用完此范围内的链接:) ...(我考虑过 az、AZ、0-9)
  • @jave.web 对。即使所有 70 亿人每分钟上传一个视频,也需要大约 14000 年,我们才会用完 11 位 id ;)
【解决方案3】:

您可以尝试使用正则表达式:

var url = 'youtube.com/watch?v=FhnMNwiGg5M';
var isyouTubeUrl = /((http|https):\/\/)?(www\.)?(youtube\.com)(\/)?([a-zA-Z0-9\-\.]+)\/?/.test(url);

【讨论】:

    【解决方案4】:

    我会提供一些额外的:

    YoutubeVimeo 检查这些 ID 是否真的有效

    var GoogleKey = 'XXXXXXXXXX';
    function GetVideoById(id) {
        var site = !isNaN(id) ? 'vimeo' : 'youtube';
        var data = false;
        if(site==='youtube') {
            $.ajax({
                async: false,
                url: 'https://www.googleapis.com/youtube/v3/videos?id='+id+'&key='+GoogleKey+'&part=snippet',
                success: function(r) {
                    if(r['items'].length) {
                        data = {'type':'youtube','data':r['items'][0]['snippet']};
                    }
                }
            });
        } else {
            $.ajax({
                async: false,
                url: 'http://vimeo.com/api/v2/video/'+id+'.json',
                success: function(r) {
                    data = {'type':'vimeo','data':r[0]};
                }
            });
        }
        return data;
    }
    

    所以示例运行:

    if(GetVideoById('YykjpeuMNEk')) {
       // youtube + data
    }
    
    if(GetVideoById('162334918')) {
       // vimeo + data
    }
    if(GetVideoById('999999')) {
       // nothing (because false)
    }
    if(GetVideoById('abcdefg')) {
       // nothing (because false)
    }
    

    【讨论】:

      【解决方案5】:

      假设您想要一个 Youtube video URL 而不是任何 YouTube URL,您可以使用正则表达式:

      var url = 'youtube.com/watch?v=FhnMNwiGg5M';
      var matches = url.match(/^(https?:\/\/)?([^\/]*\.)?youtube\.com\/watch\?([^]*&)?v=\w+(&[^]*)?/i);
      

      【讨论】:

        【解决方案6】:

        您可以使用.indexOf()检查网址是否包含单词“http://www.youtube.com

        var url = 'http://www.youtube.com/channel/UChh-akEbUM8_6ghGVnJd6cQ';
        if (url.indexOf('http://www.youtube.com') > -1) {
          alert( "true");
        } else {
          alert( "false");
        }
        

        【讨论】:

          【解决方案7】:
          you Want to validate your URL:
          
          Please pass the URL in this function then this will give you true OR false
          See Function :
          <script>
          function isValidUrl(s) {
              var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
              return regexp.test(s);
          }
          
          isValidUrl(yourURL);
          </script>
          

          【讨论】:

          • 这只会检查 url 是否有效
          【解决方案8】:
          var regexp = /^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/;
          
          var matches_array = video_url.match(regexp);
          
          if(matches_array == null)
          
          {
          
                          alert("Enter youtube url");
          
                          return false;
          
          }
          

          【讨论】:

          • 这只会匹配 youtube.com 链接
          猜你喜欢
          • 2014-07-24
          • 1970-01-01
          • 2020-11-29
          • 2012-03-12
          • 1970-01-01
          • 2014-10-05
          • 2012-01-25
          • 2017-08-27
          • 1970-01-01
          相关资源
          最近更新 更多