Javascript 来自url的youtube视频id

Javascript 来自url的youtube视频id,javascript,jquery,regex,Javascript,Jquery,Regex,我从其他stackoverflow页面获得了这些代码,用于更正youtube链接,但它们不适用于我的url: https://www.youtube.com/watch?v=r2dRQHJ-aAk 代码: $('#videoURL').focusout(函数(){ var url=this.value; var videoid=url.match(/(?:https?:\/{2})(?:w{3})?youtu(?:be)\.(?:com|be)(?:\/watch\?v=|\/)([^\s&

我从其他stackoverflow页面获得了这些代码,用于更正youtube链接,但它们不适用于我的url:

https://www.youtube.com/watch?v=r2dRQHJ-aAk
代码:


$('#videoURL').focusout(函数(){
var url=this.value;
var videoid=url.match(/(?:https?:\/{2})(?:w{3})?youtu(?:be)\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);
if(videoid!=null){
$('#videoURL')。值('http://www.youtube.com/watch?v=“+videoid[1]);
}否则{
log(“youtube url无效。”);
}
});
它总是返回:

youtube url无效


您不需要正则表达式:

var videoid = url.split('v=')[1];
var ampersandPosition = videoid.indexOf('&');
if(ampersandPosition != -1) {
    videoid = video_id.substring(0, ampersandPosition);
}
如果需要,您可以使用它,但是:

var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
为……工作

https://www.youtube.com/watch?v=r2dRQHJ-aAk
https://youtube.com/watch?v=r2dRQHJ-aAk
http://www.youtube.com/watch?v=r2dRQHJ-aAk
youtube.com/watch?v=r2dRQHJ-aAk

我不确定其他youtube url格式,但您应该能够使用子组3提取它。

事实上,我犯了一个错误:

var url = this.value;
应改为:

var url = this.val();

由于@hjpotter92

的缘故,视频id始终为11个字符长,并且只能是
a-zA-Z0-9
-
。只需在给定字符串中搜索与之匹配的字符集合。那么我应该修改哪一部分?似乎按原样工作:不,这不是同一个问题,因为用户不允许输入任何youtube URL,代码应该能够识别。@hjpotter92不总是起作用:
var url = this.value;
var url = this.val();