4

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

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 网址无效

4

3 回答 3

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?=?([^#\&\?]*).*/;
于 2013-07-26T20:08:04.370 回答
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 url 格式,但您应该能够使用子组 3 提取它。

于 2013-07-26T21:52:25.013 回答
0

事实上我犯了一个错误:

var url = this.value;

应改为:

var url = this.val();

感谢@hjpotter92

于 2013-07-27T07:51:14.433 回答