如何使用正则表达式验证YouTube 播放列表网址?
我找到了从其他问题验证视频的答案。
/^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$/
但我无法验证这样的网址:
http://www.youtube.com/watch?list=PL1F9CA2A03CF286C2&v=pFS4zYWxzNA&
或
http://www.youtube.com/watch?v=pFS4zYWxzNA&list=PL1F9CA2A03CF286C2&
答案 0 :(得分:8)
我最终得到了类似但不同的东西:
/^.*(youtu.be\/|list=)([^#\&\?]*).*/
针对以下网址:
给出以下代码:
var regExp = /^.*(youtu.be\/|list=)([^#\&\?]*).*/;
var match = url.match(regExp);
if (match && match[2]){
return match[2];
}
return null;
我的回报是PLBOh8f9FoHHjOz0vGrD20WcTtJar-LOrw
答案 1 :(得分:2)
试试这个
^http:\/\/(?:www\.)?youtube\.com\/watch\? #you forgot to mask the dot before com
( #may lead to wrong parsing
(v=.*&list=.*)| #v and then list
(list=.*&v=.*) #or versa verse - feel free to use better matching
) #for ids like "pFS4zYWxzNA"
(&.*)*$ #all other kinds of parameter
编辑: 我改进了匹配
^http:\/\/(?:www\.)?youtube\.com\/watch\?
(?:&.*)* #extra params at the beginning
(
(?:
v=([a-zA-Z0-9_\-]{11}) #propper mathing for id
(?:&.*)* #extras
&list=([a-zA-Z0-9_\-]{18}) #list
)
|
(?:
list=([a-zA-Z0-9_\-]{18})
(?:&.*)* #versa
&v=([a-zA-Z0-9_\-]{11})
)
)
(?:&.*)* #extras at the end
(?:\#.*)*$ #anchors