我已从其他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网址无效
答案 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