Regex youtube URL的正则表达式

Regex youtube URL的正则表达式,regex,youtube,Regex,Youtube,我使用以下正则表达式验证youtube视频共享url var valid = /^(http\:\/\/)?(youtube\.com|youtu\.be)+$/; alert(valid.test(url)); return false; 我希望正则表达式支持以下URL格式: http://youtu.be/cCnrX1w5luM http://youtube/cCnrX1w5luM www.youtube.com/cCnrX1w5luM youtube/cCnrX1w5luM

我使用以下正则表达式验证youtube视频共享url

var valid = /^(http\:\/\/)?(youtube\.com|youtu\.be)+$/;
alert(valid.test(url));
return false;
我希望正则表达式支持以下URL格式:

http://youtu.be/cCnrX1w5luM  
http://youtube/cCnrX1w5luM  
www.youtube.com/cCnrX1w5luM  
youtube/cCnrX1w5luM  
youtu.be/cCnrX1w5luM   
我尝试了不同的正则表达式,但是我没有找到一个适合共享链接的正则表达式。谁能帮我解决这个问题。提前感谢。

  • 您的正则表达式中缺少
    www
  • 第二个
    \.
    应该是可选的(因为
    youtu.be
    youtube
    都是有效的)
  • 正则表达式中的
    +
    允许一个或多个
    (youtube\.com | youtu\.be)
    ,而不是一个或多个通配符
    您需要使用
    表示通配符,并使用
    +
    表示您需要一个或多个通配符
尝试:

如果您希望它与带有或不带
www.
的URL匹配,只需将其设置为可选:

^(https?\:\/\/)?((www\.)?youtube\.com|youtu\.?be)\/.+$
如果希望
www.youtu.be/..
也匹配,请将可选
www.
放在括号外:

^(https?\:\/\/)?(www\.)?(youtube\.com|youtu\.?be)\/.+$

请改为选中此模式:

r'(?i)(http.//|https.//)*[A-Za-z0-9._%+-]+\.\w+'
试试这个:

((http://)?)(www\.)?((youtube\.com/)|(youtu\.be)|(youtube)).+

我知道我参加聚会晚了两年,但我还是需要写点东西,而且似乎适合我能做的每一个测试用例。应该能够引用第一个匹配($1)来获取ID。匹配http、https、www和非www、youtube.com、youtu.be、/watch?和/watch.php?在youtube.com上(youtu.be不使用这些),它支持匹配,即使URL字符串中有其他变量(?t=表示时间,list=表示播放列表,等等)


基于许多其他正则表达式;这是我得到的最好的:

((http(s)?:\/\/)?)(www\.)?((youtube\.com\/)|(youtu.be\/))[\S]+
测试:

这里有一个正则表达式,我用它来匹配和捕获视频代码中YouTube URL的重要部分:

^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$
可用于以下URL:

https://www.youtube.com/watch?v=DFYRQ_zQ-gk&feature=featured
https://www.youtube.com/watch?v=DFYRQ_zQ-gk
http://www.youtube.com/watch?v=DFYRQ_zQ-gk
//www.youtube.com/watch?v=DFYRQ_zQ-gk
www.youtube.com/watch?v=DFYRQ_zQ-gk
https://youtube.com/watch?v=DFYRQ_zQ-gk
http://youtube.com/watch?v=DFYRQ_zQ-gk
//youtube.com/watch?v=DFYRQ_zQ-gk
youtube.com/watch?v=DFYRQ_zQ-gk

https://m.youtube.com/watch?v=DFYRQ_zQ-gk
http://m.youtube.com/watch?v=DFYRQ_zQ-gk
//m.youtube.com/watch?v=DFYRQ_zQ-gk
m.youtube.com/watch?v=DFYRQ_zQ-gk

https://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
http://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
//www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US

https://www.youtube.com/embed/DFYRQ_zQ-gk?autoplay=1
https://www.youtube.com/embed/DFYRQ_zQ-gk
http://www.youtube.com/embed/DFYRQ_zQ-gk
//www.youtube.com/embed/DFYRQ_zQ-gk
www.youtube.com/embed/DFYRQ_zQ-gk
https://youtube.com/embed/DFYRQ_zQ-gk
http://youtube.com/embed/DFYRQ_zQ-gk
//youtube.com/embed/DFYRQ_zQ-gk
youtube.com/embed/DFYRQ_zQ-gk

https://youtu.be/DFYRQ_zQ-gk?t=120
https://youtu.be/DFYRQ_zQ-gk
http://youtu.be/DFYRQ_zQ-gk
//youtu.be/DFYRQ_zQ-gk
youtu.be/DFYRQ_zQ-gk

https://www.youtube.com/HamdiKickProduction?v=DFYRQ_zQ-gk
捕获的组包括:

  • 协议
  • 子域
  • 领域
  • 路径
  • 视频编码
  • 查询字符串

  • YouTube视频的格式已更改。此正则表达式适用于所有情况:

    ^(http(s)??\:\/\/)?(www\.)?((youtube\.com\/watch\?v=)|(youtu.be\/))([a-zA-Z0-9\-_])+
    

    测试。

    我试过这个,它对我很好

    (?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'<> #]+)
    
    (?:http(?:s):\/\/)(?:www\)(?:youtu\/;youtube\/;youtube\.com\/(?:(?:watch)\?(?:*&)v(?:i)=(?:embed | v | vi | user)\/)([^和‘‘‘]+)
    

    您可以在这里查看

    我从这里获取了一个答案,并添加了对我在数据集中注意到的一些边缘案例的支持。这应该适用于几乎所有有效的url


    以下代码:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::(youtube\.com/| youtu.be | youtube).*,您可能希望在
    youtu.be
    中退出
    ,并且您可能希望将
    /
    放在外部(因此它包含在
    youtu.be
    youtube
    中)。有没有可能你可以更新这个来支持,这是有效的?@Jacob Morrison又晚了两年,但他妈的-更新了代码:)
    ^(?:https:)(?:\/\/)(?:youtu\.be\/\(?:www\.;m\)?youtube\.com\/(?:watch | v | embed)(?:.php)(?:?:?:?:?:?。。*v=\/)([a-zA-Z0-9\][uza-]*$
    对其进行了一些改进,使其检查条目以url开头和结尾,因此类似于
    额外文本youtube.com/embed/DFYRQ_zQ-gk额外文本
    的内容无效。此外,添加的验证id不小于7 SYMBOL发生了什么变化?phuc77的答案似乎更好。使用phuc77的答案并非所有测试都能通过:。具体来说,应该d不验证。任何搜索解决方案的人都应该使用此答案。这是我迄今为止找到的最好答案。如果您想捕获ID,那么您的正则表达式中有一个输入错误,结尾的+号应该在最后一个括号之前,否则它将只捕获最后一个字母。最后的正则表达式应该如下所示?\:\/\/)?(www\)((youtube\.com\/watch\?v=)(youtu.be\/)([a-zA-Z0-9\-\\)+)phuc77似乎更好,这个答案并没有通过所有测试:和不是有效的youtube视频URL,但这个正则表达式将匹配它们。
    ^(http(s)??\:\/\/)?(www\.)?((youtube\.com\/watch\?v=)|(youtu.be\/))([a-zA-Z0-9\-_])+
    
    (?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'<> #]+)