Регулярное выражение для ссылок на YouTube

У кого-то есть регулярное выражение, которое получает ссылку на видео Youtube (не встроенный объект) из (почти) всех возможных способов связи с Youtube?

Я думаю, что это довольно распространенная проблема, и я уверен, что есть много способов связать это.

Отправной точкой будет:

  • http://www.youtube.com/watch?v=iwGFalTRHDA
  • http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related
  • http://youtu.be/iwGFalTRHDA
  • http://youtu.be/n17B_uFF4cA
  • http://www.youtube.com/embed/watch?feature=player_embedded&v=r5nB9u4jjy4
  • http://www.youtube.com/watch?v=t-ZRX8984sc
  • http://youtu.be/t-ZRX8984sc
  • … добавьте более возможные ссылки и / или регулярные выражения для их обнаружения.

11 Solutions collect form web for “Регулярное выражение для ссылок на YouTube”

До сих пор я получал это Regular expression работающее над приведенными мной примерами, и оно получает идентификатор в первой группе:

 http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-\_]*)(&(amp;)?‌​[\w\?‌​=]*)? 

Вы можете использовать это выражение ниже.

 (?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?\/?.*(?:watch|embed)?(?:.*v=|v\/|\/)([\w\-_]+)\&? 

Я использую его, и он охватывает наиболее используемые URL-адреса. Я продолжу обновлять его на этом Gist . Вы можете проверить его на этом инструменте .

Я улучшил ссылки, выложенные выше, с другом для скрипта, который я написал для IRC, чтобы вообще распознать ссылки без http. Он работал над всеми стресс-тестами, которые я получил до сих пор, включая искаженный текст с едва узнаваемыми URL-адресами YouTube, поэтому вот оно:

 ~(?:https?://)?(?:www\.)?youtu(?:be\.com/watch\?(?:.*?&(?:amp;)?)?v=|\.be/)([\w\-]+)(?:&(?:amp;)?[\w\?=]*)?~ 

Это будет самый длинный RegEx в мире, если вам удастся охватить все форматы ссылок, но вот вам, чтобы вы начали, который будет охватывать первые пару форматов ссылок:

 http://(www\.)?youtube\.com/watch\?.*v=([a-zA-Z0-9]+).* 

Вторая группа будет соответствовать идентификатору видео, если вам нужно это выяснить.

В последнее время у меня возникают проблемы с URL-адресами atttribution_link, поэтому я попытался создать собственное регулярное выражение, которое тоже работает для них.

Вот моя строка регулярных выражений:

 (https?://)?(www\\.)?(yotu\\.be/|youtube\\.com/)?((.+/)?(watch(\\?v=|.+&v=))?(v=)?)([\\w_-]{11})(&.+)? 

и вот некоторые тестовые примеры, которые я пробовал:

 http://www.youtube.com/watch?v=iwGFalTRHDA https://www.youtube.com/watch?v=iwGFalTRHDA http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related http://youtu.be/iwGFalTRHDA http://www.youtube.com/embed/watch?feature=player_embedded&v=iwGFalTRHDA http://www.youtube.com/embed/watch?v=iwGFalTRHDA http://www.youtube.com/embed/v=iwGFalTRHDA http://www.youtube.com/watch?feature=player_embedded&v=iwGFalTRHDA http://www.youtube.com/watch?v=iwGFalTRHDA www.youtube.com/watch?v=iwGFalTRHDA www.youtu.be/iwGFalTRHDA youtu.be/iwGFalTRHDA youtube.com/watch?v=iwGFalTRHDA http://www.youtube.com/watch/iwGFalTRHDA http://www.youtube.com/v/iwGFalTRHDA http://www.youtube.com/v/i_GFalTRHDA http://www.youtube.com/watch?v=i-GFalTRHDA&feature=related http://www.youtube.com/attribution_link?u=/watch?v=aGmiw_rrNxk&feature=share&a=9QlmP1yvjcllp0h3l0NwuA http://www.youtube.com/attribution_link?a=fF1CWYwxCQ4&u=/watch?v=qYr8opTPSaQ&feature=em-uploademail http://www.youtube.com/attribution_link?a=fF1CWYwxCQ4&feature=em-uploademail&u=/watch?v=qYr8opTPSaQ 

Также не забудьте проверить строку, которую вы получаете для своего URL-адреса видео, иногда он может получать процентные символы. Если так, просто сделайте это

 url = [url stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

и он должен это исправить.

Помните также, что индекс ключа youtube теперь является индексом 9.

 NSRange youtubeKey = [result rangeAtIndex:9]; //the youtube key NSString * strKey = [url substringWithRange:youtubeKey] ; 

Я тестирую все регулярные выражения, которые показаны здесь, и никто не может охватить все типы URL-адресов, которые использовал мой клиент.

Я построил это в значительной степени с помощью проб и ошибок, но, похоже, он работает со всеми шаблонами, которые опубликовал Poppy Deejay.

 "(?:.+?)?(?:\/v\/|watch\/|\?v=|\&v=|youtu\.be\/|\/v=|^youtu\.be\/)([a-zA-Z0-9_-]{11})+" 

Может быть, это помогает кому-то, кто находится в подобной ситуации, которую я имел сегодня;)

Piggy, поддерживающая Fanmade , охватывает следующие ссылки, включая кодированную url-версию атрибуции:

 (?:.+?)?(?:\/v\/|watch\/|\?v=|\&v=|youtu\.be\/|\/v=|^youtu\.be\/|watch\%3Fv\%3D)([a-zA-Z0-9_-]{11})+ https://www.youtube.com/attribution_link?a=tolCzpA7CrY&u=%2Fwatch%3Fv%3DMoBL33GT9S8%26feature%3Dshare https://www.youtube.com/watch?v=MoBL33GT9S8&feature=share http://www.youtube.com/watch?v=iwGFalTRHDA https://www.youtube.com/watch?v=iwGFalTRHDA http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related http://youtu.be/iwGFalTRHDA http://www.youtube.com/embed/watch?feature=player_embedded&v=iwGFalTRHDA http://www.youtube.com/embed/watch?v=iwGFalTRHDA http://www.youtube.com/embed/v=iwGFalTRHDA http://www.youtube.com/watch?feature=player_embedded&v=iwGFalTRHDA http://www.youtube.com/watch?v=iwGFalTRHDA www.youtube.com/watch?v=iwGFalTRHDA www.youtu.be/iwGFalTRHDA youtu.be/iwGFalTRHDA youtube.com/watch?v=iwGFalTRHDA http://www.youtube.com/watch/iwGFalTRHDA http://www.youtube.com/v/iwGFalTRHDA http://www.youtube.com/v/i_GFalTRHDA http://www.youtube.com/watch?v=i-GFalTRHDA&feature=related http://www.youtube.com/attribution_link?u=/watch?v=aGmiw_rrNxk&feature=share&a=9QlmP1yvjcllp0h3l0NwuA http://www.youtube.com/attribution_link?a=fF1CWYwxCQ4&u=/watch?v=qYr8opTPSaQ&feature=em-uploademail http://www.youtube.com/attribution_link?a=fF1CWYwxCQ4&feature=em-uploademail&u=/watch?v=qYr8opTPSaQ 

Я работаю с такими ссылками:

http://www.youtube.com/v/M-faNJWc9T0?fs=1&rel=0

И вот regEx, который я использую, чтобы получить ID от него:

 "(.+?)(\/v/)([a-zA-Z0-9_-]{11})+" 

Это повторяется на существующих ответах и ​​лучше обрабатывает граничные случаи. (например, http://thisisnotyoutu.be/thing )

 /(?:https?:\/\/|www\.|m\.|^)youtu(?:be\.com\/watch\?(?:.*?&(?:amp;)?)?v=|\.be\/)([\w‌​\-]+)(?:&(?:amp;)?[\w\?=]*)?/ 

вот полное решение для получения идентификатора видео youtube для java или android, я не нашел никакой ссылки, которая не работает с этой функцией

 public static String getValidYoutubeVideoId(String youtubeUrl) { if(youtubeUrl == null || youtubeUrl.trim().contentEquals("")) { return ""; } youtubeUrl = youtubeUrl.trim(); String validYoutubeVideoId = ""; String regexPattern = "^(?:https?:\\/\\/)?(?:[0-9A-Z-]+\\.)?(?:youtu\\.be\\/|youtube\\.com\\S*[^\\w\\-\\s])([\\w\\-]{11})(?=[^\\w\\-]|$)(?![?=&+%\\w]*(?:['\"][^<>]*>|< \\/a>))[?=&+%\\w]*"; Pattern regexCompiled = Pattern.compile(regexPattern, Pattern.CASE_INSENSITIVE); Matcher regexMatcher = regexCompiled.matcher(youtubeUrl); if(regexMatcher.find()) { try { validYoutubeVideoId = regexMatcher.group(1); } catch(Exception ex) { } } return validYoutubeVideoId; } 

Это регулярное выражение решает мою проблему, я могу получить ссылку на youtube, которая будет смотреть, вставлять или делиться ссылкой

 (?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'<> #]+) 

Вы можете проверить здесь https://regex101.com/r/Kvk0nB/1

  • Извлеките все видео из плейлиста youtube с помощью API youtube v3
  • Можете ли вы сказать по сетевому трафику, было ли видео просмотрено или загружено с YouTube?
  • YouTube Video Встраивается через iframe Игнорирует z-index?
  • Сохранить видео Youtube для iPhone в приложении
  • Play Youtube HTML5 встроенное видео в Android WebView
  • Как отключить видеоролики YouTube от автоматического воспроизведения?
  • Почему я не могу смотреть видео на YouTube в Google Chrome?
  • Youtube нарушает подключение к Интернету
  • как поделиться видео с моего сайта на facebook, как youtube
  • Ссылка на RTSP youtube
  • Проблема с загрузкой видео YouTube с помощью Free Download Manager
  • Давайте будем гением компьютера.