Javascript 使用正则表达式进行jQuery Youtube 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

我知道这里有很多问题要回答,但找不到一个和我类似的问题

任何主体都有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&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); 
  }