jol*_*shy 4 javascript regex youtube
我想知道如何根据url使用单个正则表达式提取youtube视频ID或播放列表ID.正则表达式还应该确保域名是youtube.com以下是我需要的一些结果:
提取播放列表ID
https://www.youtube.com/playlist?list=PLuC2HflhhpLGQ4RgqA76_Gv52fGA0909r
www.youtube.com/playlist?list=PLuC2HflhhpLGQ4RgqA76_Gv52fGA0909r
http://www.youtube.com/playlist?list=PLuC2HflhhpLGQ4RgqA76_Gv52fGA0909r
https://www.youtube.com/embed/videoseries?list=PLuC2HflhhpLGQ4RgqA76_Gv52fGA0909r
Run Code Online (Sandbox Code Playgroud)
提取视频ID
https://www.youtube.com/watch?v=fqMfRi2gJok&index=1&list=PLuC2HflhhpLGQ4RgqA76_Gv52fGA0909r
https://www.youtube.com/watch?v=fqMfRi2gJok
http://youtu.be/cCnrX1w5luM
http://youtube.com/embed/cCnrX1w5luM
http://youtube.com/v/cCnrX1w5luM
https://www.youtube.com/v/cCnrX1w5luM
www.youtube.com/v/cCnrX1w5luM
youtube.com/v/cCnrX1w5luM
Run Code Online (Sandbox Code Playgroud)
这些只是示例网址.我需要为所有可能的youtube链接结构提取相应的ID.
简而言之,提取视频ID,如果不存在,则获取播放列表ID.
您的问题明确有两种模式
首先:
^.*?(?:v|list)=(.*?)(?:&|$)
Run Code Online (Sandbox Code Playgroud)
对于任何具有显式属性的网址,或者您可以说它们=在网址中包含符号.
说明
^.*?(?:v|list)=:任何字符串,直到字v=或list=其中这里我们喜欢v过list,
(.*?)(?:&|$):这结束了任意字符串&符号或结束符号线$,其在这里我们宁愿&过$.
第二:
^(?:(?!=).)*\/(.*)$
Run Code Online (Sandbox Code Playgroud)
对于任何没有属性的url或=url中没有符号的url.
说明
^(?:(?!=).)*\/:任何没有=符号的字符串(此处由负向前瞻处理(?!=))直到/符号,
(.*)$:任何字符串,直到行尾.
将它们组合成一个我们得到的正则表达式
^(?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?.*?(?:v|list)=(.*?)(?:&|$)|^(?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?(?:(?!=).)*\/(.*)$
Run Code Online (Sandbox Code Playgroud)
这里,
(?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?被添加以处理各种形式的www.youtube.com的网址
这应该可以帮助你得到你想要的东西
见:DEMO
重要说明:这个问题,提问者想要id从www.youtube.com中提取他更喜欢"视频ID"而不是"播放列表ID".
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |