来自网址的youtube视频ID

时间:2013-07-26 20:05:12

标签: javascript jquery regex

我已从其他stackoverflow页面获取这些代码以更正youtube链接,但它们不适用于我的网址:

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

代码:

<script>
$('#videoURL').focusout(function() {
    var url = this.value;
    var videoid = url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);
    if(videoid != null) {
      $('#videoURL').value('http://www.youtube.com/watch?v='+videoid[1]);
    } else { 
        console.log("The youtube url is not valid.");
    }
});

</script>

它总是返回:

  

youtube网址无效

3 个答案:

答案 0 :(得分:4)

您不需要正则表达式:

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?=?([^#\&\?]*).*/;

答案 1 :(得分:0)

^(https?://(www\.)?)?youtube\.com/watch\?v=([0-9a-zA-Z\-]{11})$

适用于;

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网址格式,但您应该能够使用子组3提取它。

答案 2 :(得分:0)

事实上我犯了一个错误:

var url = this.value;

应改为:

var url = this.val();

感谢@ hjpotter92