Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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/2/jquery/81.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 YouTube url id正则表达式_Javascript_Jquery_Regex_Url_Youtube - Fatal编程技术网

Javascript YouTube url id正则表达式

Javascript YouTube url id正则表达式,javascript,jquery,regex,url,youtube,Javascript,Jquery,Regex,Url,Youtube,可能重复: 您可能不会再想一个,但我这里有一个jquery正则表达式,我发现它在大多数URL上都很好,下面有一个示例: http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o http://www.youtube.com/v/0zM3nApSvMg?fs=1&

可能重复:

您可能不会再想一个,但我这里有一个jquery正则表达式,我发现它在大多数URL上都很好,下面有一个示例:

http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg
正则表达式

/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/
但这无法从下面的url提取id。在本例中,id为pa14VNsdSYM


如何使用正则表达式从上述url中提取id。

youtube url id始终包含11个字符、数字、下划线和/或破折号。这是我使用过的regexp,没有问题:

var re = /[a-zA-Z0-9\-\_]{11}/;
var youtubeurl = "http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index";
alert(youtubeurl.match(re));
编辑:此解决方案实际上无法100%工作,第一个和第二个url将出现问题,因为regexp匹配的文本不是vid id

编辑2:试试这个:

var re = /(\?v=|\/\d\/|\/embed\/|\/v\/|\.be\/)([a-zA-Z0-9\-\_]+)/;
var urlArr = [
    "http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index",
    "http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o",
    "http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0",
    "http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s",
    "http://www.youtube.com/embed/0zM3nApSvMg?rel=0",
    "http://www.youtube.com/watch?v=0zM3nApSvMg",
    "http://youtu.be/0zM3nApSvMg"                  
];
for (var i = 0; i < urlArr.length; i++) {
    alert(urlArr[i].match(re)[2]);
}

youtube url id始终包含11个字符、数字、下划线和/或破折号。这是我使用过的regexp,没有问题:

var re = /[a-zA-Z0-9\-\_]{11}/;
var youtubeurl = "http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index";
alert(youtubeurl.match(re));
编辑:此解决方案实际上无法100%工作,第一个和第二个url将出现问题,因为regexp匹配的文本不是vid id

编辑2:试试这个:

var re = /(\?v=|\/\d\/|\/embed\/|\/v\/|\.be\/)([a-zA-Z0-9\-\_]+)/;
var urlArr = [
    "http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index",
    "http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o",
    "http://www.youtube.com/v/0zM3nApSvMg?fs=1&amp;hl=en_US&amp;rel=0",
    "http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s",
    "http://www.youtube.com/embed/0zM3nApSvMg?rel=0",
    "http://www.youtube.com/watch?v=0zM3nApSvMg",
    "http://youtu.be/0zM3nApSvMg"                  
];
for (var i = 0; i < urlArr.length; i++) {
    alert(urlArr[i].match(re)[2]);
}

你试过使用我链接到的问题中写的正则表达式吗?Mark提供的链接中的正则表达式不允许id中有uu,这就是为什么它对给定的视频不起作用。我对他的回答做了评论。另请参见另一个非常类似的问题。相关:您是否尝试过使用我链接到的问题中所写的正则表达式?Mark提供的链接中的正则表达式不允许id中有u,这就是为什么它对给定视频不起作用的原因。我对他的回答作了评论。另请参见另一个非常类似的问题。相关: