Javascript 如何在文本框中验证客户端中的youtube url

Javascript 如何在文本框中验证客户端中的youtube url,javascript,regex,html,validation,youtube,Javascript,Regex,Html,Validation,Youtube,我必须创建一个文本框,只允许你管视频的url 为了在服务器端处理验证,我使用 我在为客户端验证寻找相同的解决方案。我找到了关于,但它似乎只适用于html5浏览器 是否可以使用文本框进行客户端验证,以便与所有浏览器兼容 谢谢转义正则表达式中的所有正斜杠,然后将修改后的正则表达式放在/分隔符中,不带任何空格或注释行,无需添加x修饰符 var re = /^(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/watch\?v=([^&]+

我必须创建一个文本框,只允许你管视频的url

为了在服务器端处理验证,我使用

我在为客户端验证寻找相同的解决方案。我找到了关于
,但它似乎只适用于html5浏览器

是否可以使用文本框进行客户端验证,以便与所有浏览器兼容


谢谢

转义正则表达式中的所有正斜杠,然后将修改后的正则表达式放在
/
分隔符中,不带任何空格或注释行,无需添加
x
修饰符

var re = /^(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/watch\?v=([^&]+)/m;

下面是验证youtube url的代码-

function validateYouTubeUrl()
{
    var url = $('#youTubeUrl').val();
        if (url != undefined || url != '') {
            var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
            var match = url.match(regExp);
            if (match && match[2].length == 11) {
                // Do anything for being valid
                // if need to change the url to embed url then use below line
                $('#ytplayerSide').attr('src', 'https://www.youtube.com/embed/' + match[2] + '?autoplay=0');
            }
            else {
                // Do anything for not being valid
            }
        }
}
Fiddle网址:

请参见此工作示例:

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

更新的Fiddle:

结合这里的答案和一些修改,我提出了这个regexp:

^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(\?\S*)?$
这将匹配任何格式,但如果id超过11个字符,则将不匹配。还可以添加开始视频标签,并在末尾添加“?”部分


您可以通过粘贴来测试它

它按预期工作,我很高兴您添加了工作链接。。非常感谢您分享RegExp属性被弃用的信息,但是我很惊讶为什么微软没有提到这一点。我现在更新了我的解决方案。哇!!!您甚至添加了如何更改url以嵌入url。。。如果可能,请提供JSFIDLE。Thanks@hitesh,也只是添加了fiddle url,尝试并标记为答案,如果是…
if(match&&match[2]。长度==11){
…这件事背后的逻辑是什么我不明白…你能解释一下吗。。。thanks@Prateek,这意味着节应匹配列表中不存在的单个字符,即#、&和?,因为这些字符在URL中具有特殊的含义/用途。您可以在此更清晰的版本中播放更多内容:
/^*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=| v=)([^和?]*)。/
Hitesh,如果有人为你工作,你应该把这三个答案中的任何一个标记为答案,这样其他人就可以相信了。很难选择哪一个是正确的!!!@innomanik和你的答案似乎都像我预期的那样有效。给我一些时间,我会接受正确的答案。
^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(\?\S*)?$