Как работает шаблон
| Часть | Значение |
|---|---|
(?:https?:\/\/)?(?:www\.|m\.)? | Необязательный протокол и поддомен www или m |
youtube\.com\/(?:watch\?v=|embed\/|shorts\/) | Ссылки watch, embed и Shorts |
youtu\.be\/ | Или короткие ссылки youtu.be |
([\w-]{11}) | Группа 1: 11-символьный ID видео |
(?:[?&#].*)? | Необязательные дополнительные параметры, например &t=42 или &list=… |
Примеры кода
JavaScript
const re = /^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'(?:https?://)?(?:www\.|m\.)?(?:youtube\.com/(?:watch\?v=|embed/|shorts/)|youtu\.be/)([\w-]{11})(?:[?&#].*)?', value))PHP
preg_match('/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/', $value) === 1;
Примечания и ограничения
Группа 1 содержит ID видео, который можно подставить в https://www.youtube.com/embed/ID или в URL миниатюры https://i.ytimg.com/vi/ID/hqdefault.jpg. Первым параметром в ссылке watch должен быть v=.
Тестер регулярных выражений
Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.