有人有一个正则表达式,从(几乎)链接到Youtube的所有可能方式获得Youtube视频(不是嵌入对象)的链接吗?
我认为这是一个非常常见的问题,我确信有很多方法可以将其联系起来.
一个起点是:
jro*_*rom 52
到目前为止,我已经Regular expression
为我发布的示例工作了,它获得了第一组的ID:
http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-\_]*)(&(amp;)???[\w\???=]*)?
Run Code Online (Sandbox Code Playgroud)
bru*_*les 13
您可以在下面使用此表达式.
(?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?\/?.*(?:watch|embed)?(?:.*v=|v\/|\/)([\w\-_]+)\&?
Run Code Online (Sandbox Code Playgroud)
我正在使用它,它涵盖了最常用的URL.我将继续在这个要点上更新它.您可以在此工具上进行测试.
我最喜欢 @brunodles 的解决方案,但您仍然可以匹配非视频链接,例如https://www.youtube.com/feed/subscriptions
我采用了这个解决方案
(?:https?:\/\/)?(?:www\.)?youtu(?:\.be\/|be.com\/\S*(?:watch|embed)(?:(?:(?=\/[-a-zA-Z0-9_]{11,}(?!\S))\/)|(?:\S*v=|v\/)))([-a-zA-Z0-9_]{11,})
Run Code Online (Sandbox Code Playgroud)
它还可用于匹配多个空格分隔的链接。视频 ID 将在第一组中捕获。
使用以下网址进行测试:
youtu.be/iwGFalTRHDA
youtube.com/watch?v=iwGFalTRHDA
www.youtube.com/watch?v=iwGFalTRHDA
http://www.youtube.com/watch?v=iwGFalTRHDA
https://www.youtube.com/watch?v=iwGFalTRHDA
https://www.youtube.com/watch?v=MoBL33GT9S8&feature=share
https://www.youtube.com/embed/watch?feature=player_embedded&v=iwGFalTRHDA
https://www.youtube.com/embed/watch?v=iwGFalTRHDA
https://www.youtube.com/embed/v=iwGFalTRHDA
https://www.youtube.com/watch/iwGFalTRHDA
http://www.youtube.com/attribution_link?u=/watch?v=aGmiw_rrNxk&feature=share
https://m.youtube.com/watch?v=iwGFalTRHDA
// will not match
https://www.youtube.com/feed/subscriptions
https://www.youtube.com/channel/UCgc00bfF_PvO_2AvqJZHXFg
https://www.youtube.com/c/NatGeoEdOrg/videos
Run Code Online (Sandbox Code Playgroud)
https://regex101.com/r/rq2KLv/1
小智 5
我改进了上面与朋友发布的链接,我为IRC编写的脚本甚至可以识别没有http的链接.它适用于我到目前为止所有压力测试,包括乱码文本与几乎无法识别的YouTube网址,所以这里是:
~(?:https?://)?(?:www\.)?youtu(?:be\.com/watch\?(?:.*?&(?:amp;)?)?v=|\.be/)([\w\-]+)(?:&(?:amp;)?[\w\?=]*)?~
Run Code Online (Sandbox Code Playgroud)