Я хочу получить v=id
URL-адрес YouTube с помощью JavaScript (без jQuery, чистый JavaScript).
Примеры форматов URL YouTube
http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW
http://www.youtube.com/watch?v=u8nQa1cJyX8
Или любой другой формат YouTube, который содержит идентификатор видео в URL.
Результат из этих форматов
u8nQa1cJyX8
javascript
regex
url
youtube
Адам
источник
источник
Ответы:
Вам не нужно использовать регулярное выражение для этого.
источник
https://youtu.be/{{video_id}}
url='https://youtu.be/{{video_id}}'; url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);
Я сделал усовершенствование Regex, предоставленное "jeffreypriebe", потому что ему нужен был своего рода URL-адрес YouTube - URL-адрес видео, когда они просматривают канал.
Ну нет, но это функция, которую я вооружил.
Это типы поддерживаемых URL
Можно найти в [http://web.archive.org/web/20160926134334/] http://lasnv.net/foro/839/Javascript_parsear_URL_de_YouTube
источник
/.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/
тогда используйтеmatch[1]
вместоmatch[7]
(что показалось мне немного произвольным). Также исправляет ошибку, указанную WebDev.Я немного упростил ответ Ласнв.
Это также исправляет ошибку, которую описывает WebDeb.
Вот:
Вот ссылка на регулярное выражение для игры: http://regexr.com/3dnqv
источник
По состоянию на 01.01.2015 ни один из них не работал с кухонной раковиной, особенно URL-адреса без протокольных http / s и с доменом youtube-nocookie. Итак, вот модифицированная версия, которая работает на всех этих различных версиях Youtube:
источник
^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]+).*
Проверено на:
Вдохновлен этим другим ответом .
источник
Учитывая, что у YouTube есть множество стилей URL, я думаю, что Regex - лучшее решение. Вот мой Regex:
В группе 3 есть ваш идентификатор YouTube
Примеры URL-адресов YouTube (в настоящее время включая «устаревший стиль встраивания URL-адресов») - вышеприведенный Regex работает на всех из них:
Наконечник шляпы к Lasnv
источник
"domain.com/embed/file.txt"
,"/tv/"
и"Has anyone seen my watch?"
. Смотрите: мой ответ на похожий вопрос для гораздо более точного решения.Я создал функцию, которая проверяет пользовательский ввод для вставки идентификаторов Youtube, Soundcloud или Vimeo, чтобы иметь возможность создавать более непрерывный дизайн со встроенными медиаданными. Эта функция обнаруживает и возвращает объект с двумя свойствами: «type» и «id». Типом может быть «youtube», «vimeo» или «soundcloud», а свойство «id» является уникальным медиа-идентификатором.
На сайте я использую дамп textarea, где пользователь может вставить любой тип ссылки или встроенный код, включая iFrame-embedding как vimeo, так и youtube.
источник
Позже к игре здесь, но я собрал два отличных ответа от mantish и jw. Во-первых, модифицированное регулярное выражение:
Вот тестовый код (я добавил оригинальные тестовые примеры mantish к более неприятным jw):
Экспериментальная версия для обработки m.youtube URLs , упомянутый в комментариях:
Его необходимо
parsed[2]
заменить наparsed[3]
два места в тестах (которые затем проходят сm.youtube
добавленными в тесты URL-адресами). Дайте мне знать, если увидите проблемы.источник
http://youtu.be/
если я добавлю,/
он помечает его как действительный. Используя это в(value) => /^.*(youtu\.be\/|vi?\/|u\/\w\/|embed\/|\?vi?=|\&vi?=)([^#\&\?]*).*/.test(value)
ТЛ; др.
Сопоставляет все примеры URL по этому вопросу, а затем некоторые.
ID всегда будет в группе совпадений 7.
Живые примеры всех URL-адресов, которые я получил из ответов на этот вопрос: https://regexr.com/3u0d4
Полное объяснение:
Как много ответов / комментариев поднял, есть много форматов для URL видео YouTube. Даже несколько TLD, где они могут показаться "размещенными".
Вы можете посмотреть полный список вариантов, которые я проверял, перейдя по ссылке regexr выше.
Давайте сломать RegExp.
^
Зафиксируйте строку в начале строки.(https?:\/\/)?
Необязательные протоколы http: // или https: // The?
делает предыдущий элемент необязательным, поэтомуs
вся группа (все, что заключено в скобки) является необязательной.Хорошо, следующая часть - это главное. В основном у нас есть два варианта: различные версии www.youtube.com/...[id] и сокращенная ссылка youtu.be/[id] версия.
Наконец, у нас есть группа для выбора идентификатора видео. Как минимум один символ, который является цифрой, буквой, подчеркиванием или тире.
Вы можете узнать гораздо больше деталей о каждой части регулярного выражения, перейдя по ссылке regexr и увидев, как каждая часть выражения соответствует тексту в URL.
источник
Лучшее решение (с 2019 по 2020 годы), которое я нашел, заключается в том, что:
Я нашел это здесь .
источник
Поскольку идентификаторы видео на YouTube установлены в 11 символов , мы можем просто сделать это
substring
после того, как разделим URLv=
. Тогда мы не зависим от амперсанда в конце.Красиво и просто :)
источник
Я суммировал все предложения и вот универсальный и краткий ответ на этот вопрос:
источник
Код Java: (Работает для всех URL:
)
Для DailyMotion:
источник
Чуть более строгая версия:
Проверено на:
источник
Вы можете использовать следующий код, чтобы получить идентификатор видео YouTube из URL:
источник
Слегка измененная версия от одного опубликованного сообщения:
Это предполагает, что код всегда 11 символов. Я использую это в ActionScript, но не уверен, что {11,11} поддерживается в Javascript. Также добавлена поддержка & v = .... (на всякий случай)
источник
Это определенно требует регулярных выражений:
Скопируйте в Ruby IRB:
Смотрите все тестовые случаи: https://gist.github.com/blairanderson/b264a15a8faaac9c6318
источник
Еще один:
Работает с любым URL, показанным в этой теме.
Это не будет работать, когда YouTube добавляет какой-либо другой параметр с 11 символами base64. До этого это легкий путь.
источник
Я сделал небольшую функцию для извлечения идентификатора видео из URL-адреса Youtube, который можно увидеть ниже.
Эта функция извлекает идентификатор видео, даже если в URL есть несколько параметров.
источник
Это может получить идентификатор видео из любого типа ссылок на YouTube
источник
Мне понравился ответ Сурьи .. Просто случай, когда это не сработает ...
не работает для
обновленная версия:
работает для всех.
источник
Попробуй это -
источник
Крис Ноле, более чистый пример ответа Lasnv, очень хорош, но недавно я обнаружил, что если вы пытаетесь найти ссылку на youtube в тексте и добавить какой-то случайный текст после URL-адреса youtube, регулярное выражение соответствует гораздо больше, чем нужно. Улучшенный ответ Криса Ноле:
источник
Для тестирования:
источник
Хорошо, способ сделать это с помощью простого разбора: получить все, начиная с первого знака = до первого знака & .
Я думаю, что у них был похожий ответ здесь:
Разбор Vimeo ID с использованием JavaScript?
источник
&
?Мы знаем, что эти символы «? V =» никогда не могут появляться больше, чем символы, но «v» может появляться как-то в самом Id, поэтому мы используем «? V =» в качестве разделителя. Посмотрите, как работает здесь
источник
Простое регулярное выражение, если у вас есть полный URL, оставьте его простым.
источник
я надеюсь, что это может помочь
источник
Самый короткий и эффективный
источник
Как упомянуто в комментарии :
источник