Javascript 如何使用jquery检查有效的Youtube url
在Jquery中,我想单独检查youtube上的特定url,并通过将其声明为无效url来显示成功状态和其他我想跳过的urlJavascript 如何使用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。您可以尝试使
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)
}
对于Youtube和Vimeo来说,检查这些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)
}