我想要得到v=id从YouTube的URL与JavaScript(没有jQuery,纯JavaScript)。
YouTube URL格式示例
http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW
http://www.youtube.com/watch?v=u8nQa1cJyX8
或在URL中包含视频ID的任何其他YouTube格式。
这些格式的结果
u8nQa1cJyX8
我想要得到v=id从YouTube的URL与JavaScript(没有jQuery,纯JavaScript)。
YouTube URL格式示例
http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW
http://www.youtube.com/watch?v=u8nQa1cJyX8
或在URL中包含视频ID的任何其他YouTube格式。
这些格式的结果
u8nQa1cJyX8
当前回答
我对“jeffreypriebe”提供的Regex做了一个增强,因为他需要一种YouTube URL是视频的URL,当他们通过一个频道看。
不,但这是我武装的函数。
<script type="text/javascript">
function youtube_parser(url){
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
var match = url.match(regExp);
return (match&&match[7].length==11)? match[7] : false;
}
</script>
这些是支持的url类型
http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg
可在[http://web.archive.org/web/20160926134334/]找到 http://lasnv.net/foro/839/Javascript_parsear_URL_de_YouTube
其他回答
这是一个稍作改动的版本:
var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]{11,11}).*/;
var match = url.match(regExp);
if (match) if (match.length >= 2) return match[2];
// error
这假设代码总是11个字符。 我在ActionScript中使用这个,不确定在Javascript中是否支持{11,11}。还增加了对&v=....的支持(以防万一)
您不需要为此使用正则表达式。
var video_id = window.location.search.split('v=')[1];
var ampersandPosition = video_id.indexOf('&');
if(ampersandPosition != -1) {
video_id = video_id.substring(0, ampersandPosition);
}
这肯定需要regex:
复制到Ruby IRB:
var url = "http://www.youtube.com/watch?v=NLqASIXrVbY"
var VID_REGEX = /(?:youtube(?:-nocookie)?\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/
url.match(VID_REGEX)[1]
查看所有测试用例:https://gist.github.com/blairanderson/b264a15a8faaac9c6318
这里有一个最短和最简单的正则表达式
url = url+'&'
regex = "v=(.*?)&|youtu.be\/(.*?)&"
回答很好,但我最近发现,如果你试图在文本中找到你的youtube链接,并在youtube url后放置一些随机文本,regexp匹配的方式比需要的更多。改进的Chris Nolet回答:
- ^ * (?): youtu。be | u - v | \ \ \ w / |嵌入- | watch \ v ? =)([^#\&\?]{ 11,11})。* /