javascript - YouTube 视频 ID 的正则表达式

标签 javascript regex

我有以下代码可以从字符串中检测视频 ID。 它实际上捕获了我需要的更多情况,我想让它更简单,并仅为这种格式的字符串返回 id:

https://www.youtube.com/watch?v=85PMSYAguZ8
https://youtu.be/85PMSYAguZ8

代码:

_getVideoIdFromUrl: function (value) {
var regEx = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
var matches = value.match(regEx);
if (matches) {
    return matches[1];
}
return false;

},

我需要帮助来相应地更改正则表达式,有什么想法吗?

目前它检测:

YES   'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
YES   'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
YES   'http://youtu.be/6dwqZw0j_jY',
YES   'http://www.youtube.com/watch?v=6dwqZw0j_jY&feature=youtu.be',    
YES   'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
YES   'http://www.youtube.com/embed/nas1rJpm7wY?rel=0',
YES   'http://www.youtube.com/watch?v=peFZbP64dsU',
YES   'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player',
YES   'http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
YES   'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',  
YES   'http://youtu.be/afa-5HQHiAs',
YES   'http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player'
NO    '//www.youtube-nocookie.com/embed/up_lNV-yoK4?rel=0',
NO    'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo',
NO    'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
NO    'http://www.youtube.com/user/SilkRoadTheatre#p/a/u/2/6dwqZw0j_jY',
NO    'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo?rel=0',
NO    'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
NO    'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
NO    'http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player',
NO    'http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
NO    'http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
NO    'http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',

最佳答案

试试这个:

urls = ['http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
'http://youtu.be/6dwqZw0j_jY',
'http://www.youtube.com/watch?v=6dwqZw0j_jY&feature=youtu.be',
'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
'http://www.youtube.com/embed/nas1rJpm7wY?rel=0',
'http://www.youtube.com/watch?v=peFZbP64dsU',
'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player',
'http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtu.be/afa-5HQHiAs',
'http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player',
'//www.youtube-nocookie.com/embed/up_lNV-yoK4?rel=0',
'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo',
'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
'http://www.youtube.com/user/SilkRoadTheatre#p/a/u/2/6dwqZw0j_jY',
'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo?rel=0',
'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
'http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player',
'http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player']

_getVideoIdFromUrl = function (value) {
  var regEx = "^(?:https?:)?//[^/]*(?:youtube(?:-nocookie)?\.com|youtu\.be).*[=/]([-\\w]{11})(?:\\?|=|&|$)";
  var matches = value.match(regEx);
  if (matches) {
      console.log(value + "\n" + matches[1] + "\n");
  }
  return false;
}

urls.forEach(function(url) {
  _getVideoIdFromUrl(url)
});

关于javascript - YouTube 视频 ID 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440678/

相关文章:

javascript - 我无法攻击具有动态类的项目上的 Onclick

javascript - 使文本响应其是否溢出其父 div

具有替换字符串方法的Java正则表达式

javascript - Phonegap Cordova - 尝试连接到公共(public) IP 服务器

javascript - 使用 AJAX 加载内容,其中包含脚本标签

javascript - 从tinymce发布数据时,它不使用Codeigniter存储数据库

Java 对非英语正则表达式的支持

Python 提取模式匹配

c# - 正则表达式值更新

Javascript 正则表达式匹配文字\\n