如何验证YouTube和Vimeo的URL

4

我需要创建一个只验证YouTube链接的JS Fiddle。我想通过相同的输入来验证Vimeo链接,这可行吗?

以下是我的JS代码:

function ytVidId(url) {
    var p = /^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
    return (url.match(p)) ? RegExp.$1 : false;
}

$('#youtube').bind("change keyup input", function() {
    var url = $(this).val();
    if (ytVidId(url) !== false) {
        $("#status").html('<iframe src="https://www.youtube.com/embed/' + ytVidId(url) + '" id="videoObject" type="text/html" width="100%" height="265" frameborder="0" allowfullscreen></iframe>');
        $('#button').attr('disabled', false);

    } else {
        $("#status").html("not valid url");
        $('#button').attr('disabled',true);

    }
});
1个回答

2
您可以使用以下表达式检查URL的有效性。
   var a= url.match(/http:\/\/(:?www.)?(\w*)/)[2];
   if (a =="youtube")
    { 
           // do stuff
    }
   else if (a =="vimeo")
    {
            // do stuff
    }
    else
    {
           // Not a valid url
    }

或者

var a  = url.match("/http:\/\/(?:www.)?(?:(vimeo).com\/(.*)|(youtube).com\/watch\?v=(.*?)&)/");

if (a =="youtube")
{ 
  // do stuff
}
else if (a =="vimeo")
{
// do stuff
}
else
{
    // Not a valid url
}

1
如果我使用 youtu.be 作为 URL,会怎样? - roberrrt-s
@Roberrrt,你可以写 else 部分。 - Aamerallous
1
var a = url.match(/http://(:?www.)?(\w*)/)[2]; if (a == "youtube") { // 做一些事情 } else if (a == "vimeo") { // 做一些事情 } else { // 不是一个有效的URL } - Aamerallous

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接