Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jquery检查有效的Youtube url_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用jquery检查有效的Youtube url

Javascript 如何使用jquery检查有效的Youtube url,javascript,jquery,Javascript,Jquery,在Jquery中,我想单独检查youtube上的特定url,并通过将其声明为无效url来显示成功状态和其他我想跳过的url var _videoUrl = "youtube.com/watch?v=FhnMNwiGg5M"; if (_videoUrl.contains("youtube.com")) { alert('Valid'); } else { alert('Not Valid'); } 如何检查包含。或任何其他选项来单独检查有效的youtube url。您可以尝试使

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

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

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

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

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

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

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

通常,大多数人想要的是youtube视频ID

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

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

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

/**
 * 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;

您可以使用
.indexOf()

您想验证您的URL:
请在此函数中传递URL,然后这将为您提供true或false
参见功能:
函数isValidUrl(s){
var regexp=/(ftp | http | https):\/\/(\w+:{0,1}\w*@)(\S+)(:[0-9]+)(\/\\/([\w!:?+=&%@!\-\/])/
返回regexp.test;
}
isvalidul(您的URL);

我会多给一些:

if(GetVideoById('YykjpeuMNEk')) {
   // youtube + data
}

if(GetVideoById('162334918')) {
   // vimeo + data
}
if(GetVideoById('999999')) {
   // nothing (because false)
}
if(GetVideoById('abcdefg')) {
   // nothing (because false)
}
对于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)
}

你认为什么是“有效的”?如中所示,它在URL中具有正确的格式,或者该链接中实际上有一个视频?不要忘记视频ID总是11个字符长…您必须检查视频ID长度是否为11。很高兴知道,虽然我倾向于允许任何长度,只是因为如果ID用完,ID长度可能会改变。YouTube开发人员表示,他们不保证保留11个字符的长度:@xelCostasPena是正确的-但即使他们没有这样说-52 036 560 683 837 093 888(52万亿)似乎是一个很大的数字,但由于越来越多的人使用youtube,越来越多的人上传。。。youtube和我们在一起很久了。。。我们很容易在几年内用完这个范围内的链接:)…(我考虑过a-z,a-z,0-9)@jave.web right。即使所有70亿人每分钟上传一个视频,也需要大约14000年的时间,11位数的ID才会用完;)那么youtu.be短URL呢?
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)
}