Javascript 使用正则表达式进行jQuery Youtube URL验证
我知道这里有很多问题要回答,但找不到一个和我类似的问题 任何主体都有JavaScript正则表达式,用于验证下面列出的YouTube视频URL行。只是想知道这样一个URL在哪里是可能的Javascript 使用正则表达式进行jQuery Youtube URL验证,javascript,jquery,regex,url,youtube,Javascript,Jquery,Regex,Url,Youtube,我知道这里有很多问题要回答,但找不到一个和我类似的问题 任何主体都有JavaScript正则表达式,用于验证下面列出的YouTube视频URL行。只是想知道这样一个URL在哪里是可能的 http://www.youtube.com/watch?v=bQVoAWSP7k4 http://www.youtube.com/watch?v=bQVoAWSP7k4&feature=popular http://www.youtube.com/watch?v=McNqjYiFmyQ&feat
http://www.youtube.com/watch?v=bQVoAWSP7k4
http://www.youtube.com/watch?v=bQVoAWSP7k4&feature=popular
http://www.youtube.com/watch?v=McNqjYiFmyQ&feature=related&bhablah
http://youtube.com/watch?v=bQVoAWSP7k4
--更新1--
--更新2--
这一个几乎可以正常工作,但是对于URL来说失败了
您不能将id部分与\w+匹配,因为它不包含短划线字符(-)。[a-zA-Z0-9_-]+更正确。ULTIMATE YOUTUBE正则表达式 樱桃采摘 由于解释越来越长,我将最终结果放在顶部。请随意复制+粘贴,然后继续前进。有关详细说明,请阅读下面的“完整故事” 不带方案,带子域(域:youtu.be,路径:/)
www.youtu.be/<video:id>
www.youtube.com/embed/<video:id>
www.youtube.com/embed/<video:id>&other_params
www.youtube.com/v/<video:id>
www.youtube.com/v/<video:id>&other_params
www.youtube.com/watch?v=<video:id>
www.youtube.com/watch?v=<video:id>&other_params
www.youtube.com/watch?other_params&v=<video:id>
www.youtube.com/watch?other_params&v=<video:id>&more_params
www.youtu.be/
有HTTP方案,没有子域(域:youtu.be,路径:/)
http://youtu.be/
带有HTTP方案和子域(域:youtu.be,路径:/)
http://www.youtu.be/
使用HTTPS方案,无子域(域:youtu.be,路径:/)
https://youtu.be/
使用HTTPS方案和子域(域:youtu.be,路径:/)
https://www.youtu.be/
没有方案和子域(域:youtube.com,路径:/embed)
youtu.be/<video:id>
youtube.com/embed/<video:id>
youtube.com/embed/<video:id>&other_params
youtube.com/v/<video:id>
youtube.com/v/<video:id>&other_params
youtube.com/watch?v=<video:id>
youtube.com/watch?v=<video:id>&other_params
youtube.com/watch?other_params&v=<video:id>
youtube.com/watch?other_params&v=<video:id>&more_params
youtube.com/embed/
youtube.com/embed/&其他参数
无方案,有子域(域:youtube.com,路径:/embed)
www.youtu.be/<video:id>
www.youtube.com/embed/<video:id>
www.youtube.com/embed/<video:id>&other_params
www.youtube.com/v/<video:id>
www.youtube.com/v/<video:id>&other_params
www.youtube.com/watch?v=<video:id>
www.youtube.com/watch?v=<video:id>&other_params
www.youtube.com/watch?other_params&v=<video:id>
www.youtube.com/watch?other_params&v=<video:id>&more_params
www.youtube.com/embed/
www.youtube.com/embed/&其他参数
使用HTTP方案,无子域(域:youtube.com,路径:/embed)
http://youtube.com/embed/
http://youtube.com/embed/&other_params
带有HTTP方案和子域(域:youtube.com,路径:/embed)
http://www.youtube.com/embed/
http://www.youtube.com/embed/&other_params
使用HTTPS方案,无子域(域:youtube.com,路径:/embed)
https://youtube.com/embed/
https://youtube.com/embed/&other_params
使用HTTPS方案和子域(域:youtube.com,路径:/embed)
https://www.youtube.com/embed/
https://www.youtube.com/embed/&other_params
没有方案和子域(域:youtube.com,路径:/v)
youtu.be/<video:id>
youtube.com/embed/<video:id>
youtube.com/embed/<video:id>&other_params
youtube.com/v/<video:id>
youtube.com/v/<video:id>&other_params
youtube.com/watch?v=<video:id>
youtube.com/watch?v=<video:id>&other_params
youtube.com/watch?other_params&v=<video:id>
youtube.com/watch?other_params&v=<video:id>&more_params
youtube.com/v/
youtube.com/v/&其他参数
无方案,有子域(域:youtube.com,路径:/v)
www.youtu.be/<video:id>
www.youtube.com/embed/<video:id>
www.youtube.com/embed/<video:id>&other_params
www.youtube.com/v/<video:id>
www.youtube.com/v/<video:id>&other_params
www.youtube.com/watch?v=<video:id>
www.youtube.com/watch?v=<video:id>&other_params
www.youtube.com/watch?other_params&v=<video:id>
www.youtube.com/watch?other_params&v=<video:id>&more_params
www.youtube.com/v/
www.youtube.com/v/&其他参数
有HTTP方案,没有子域(域:youtube.com,路径:/v)
http://youtube.com/v/
http://youtube.com/v/&other_params
带有HTTP方案和子域(域:youtube.com,路径:/v)
http://www.youtube.com/v/
http://www.youtube.com/v/&other_params
使用HTTPS方案,无子域(域:youtube.com,路径:/v)
https://youtube.com/v/
https://youtube.com/v/&other_params
使用HTTPS方案和子域(域:youtube.com,路径:/v)
https://www.youtube.com/v/
https://www.youtube.com/v/&other_params
没有方案和子域(域:youtube.com,路径:/watch)
youtu.be/<video:id>
youtube.com/embed/<video:id>
youtube.com/embed/<video:id>&other_params
youtube.com/v/<video:id>
youtube.com/v/<video:id>&other_params
youtube.com/watch?v=<video:id>
youtube.com/watch?v=<video:id>&other_params
youtube.com/watch?other_params&v=<video:id>
youtube.com/watch?other_params&v=<video:id>&more_params
youtube.com/watch?v=
youtube.com/watch?v=&其他参数
youtube.com/watch?其他参数&v=
youtube.com/watch?其他参数&v=&more参数
无方案,有子域(域:youtube.com,路径:/watch)
www.youtu.be/<video:id>
www.youtube.com/embed/<video:id>
www.youtube.com/embed/<video:id>&other_params
www.youtube.com/v/<video:id>
www.youtube.com/v/<video:id>&other_params
www.youtube.com/watch?v=<video:id>
www.youtube.com/watch?v=<video:id>&other_params
www.youtube.com/watch?other_params&v=<video:id>
www.youtube.com/watch?other_params&v=<video:id>&more_params
www.youtube.com/watch?v=
www.youtube.com/watch?v=&其他参数
www.youtube.com/watch?其他参数&v=
www.youtube.com/watch?其他参数&v=&more参数
使用HTTP方案,无子域(域:youtube.com,路径:/watch)
http://youtube.com/watch?v=
http://youtube.com/watch?v=&other_params
http://youtube.com/watch?other_params&v=
http://youtube.com/watch?other_params&v=&more_params
使用HTTP方案和子域(域:youtube.com,路径:/watch)
http://www.youtube.com/watch?v=
http://www.youtube.com/watch?v=&other_params
http://www.youtube.com/watch?other_params&v=
http://www.youtube.com/watch?other_params&v=&more_params
使用HTTPS方案,无子域(域:youtube.com,路径:/watch)
https://youtube.com/watch?v=
https://youtube.com/watch?v=&other_params
https://youtube.com/watch?other_params&v=
https://youtube.com/watch?other_params&v=&more_params
使用HTTPS方案和子域(域:youtube.com,路径:/watch)
https://www.youtube.com/watch?v=
https://www.youtube.com/watch?v=&other_params
https://www.youtube.com/watch?other_params&v=
https://www.youtube.com/watch?other_params&v=&more_params
功能用法
使用该模式最简单的方法是将其包装成如下函数:
/**
*用于匹配(并返回)视频Id的JavaScript函数
*任何有效的Youtube Url,作为输入字符串提供。
*@作者:斯蒂芬·施密茨
*@url:https://stackoverflow.com/a/10315969/624466
*/
函数ytVidId(url){
var p=/^(?:https?:\/\/)(?:www\)(?:youtu\.be\/;youtube\.com\/(?:embed\/;v\/;watch\?v=;watch\?+&v=)(\w-){11})(?:\S+)/;
返回(url.match(p))?RegExp.$1:false;
}
//例如,仅限代码片段!
document.body.addEventListener('click',函数(e){
if(e.target.className=='yturl'&&'undefined'!==e.target.value){
var ytId=ytVidId(即目标值);
警报(e.target.value+“\r\n结果:”+(!ytId?:false):ytId));
}
},假)代码>
@eyecatchup-ubov
function validYT(url) {
var p = /^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/;
return (url.match(p)) ? RegExp.$1 : false;
}
/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((.|-){11})(?:\S+)?$/
http://www.regexper.com/#/%5E%28?:https?:%5C/%5C/%29?%28?:www%5C.%29?%28?:youtu%5C.be%5C/%7Cyoutube%5C.com%5C/%28?:embed%5C/%7Cv%5C/%7Cwatch%5C?v=%7Cwatch%5C?.%2b&v=%29%29%28%28%5Cw%7C-%29%7B11%7D%29%28?:%5CS%2b%29?$/
http://www.regexper.com/#%2F%5E(%3F%3Ahttps%3F%3A%5C%2F%5C%2F)%3F(%3F%3Awww%5C.)%3F(%3F%3Ayoutu%5C.be%5C%2F%7Cyoutube%5C.com%5C%2F(%3F%3Aembed%5C%2F%7Cv%5C%2F%7Cwatch%5C%3Fv%3D%7Cwatch%5C%3F.%2B%26v%3D))((%5Ba-zA-Z0-9%5D%7C-)%7B11%7D)(%3F%3A%5CS%2B)%3F%24%2F
/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11,})(?:\S+)?$/
^(?:https?:\/\/)?(?:(?:www|m)\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$
http://regexper.com/#%5E(%3F%3Ahttps%3F%3A%5C%2F%5C%2F)%3F(%3F%3A(%3F%3Awww%7Cm)%5C.)%3F(%3F%3Ayoutu%5C.be%5C%2F%7Cyoutube(%3F%3A-nocookie)%3F%5C.com%5C%2F(%3F%3Aembed%5C%2F%7Cv%5C%2F%7Cwatch%5C%3Fv%3D%7Cwatch%5C%3F.%2B%26v%3D))((%5Cw%7C-)%7B11%7D)(%3F%3A%5CS%2B)%3F%24
/* test youtube */
var src = "https://www.youtube.com/watch?v=HCPLKrRguDM";
regExTestYT(src);
function regExTestYT(str){
var exp = new RegExp(/(youtu\.be|youtube\.com)/);
return exp.test(str);
}