Regex para ID do vídeo do YouTube a partir de URL

Use /^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/ para verificar se uma string inteira é um ID de vídeo do YouTube válido a partir de URL. Cada exemplo abaixo foi testado contra o padrão, e você pode abri-lo no Testador de Regex com as amostras já carregadas.

Atualizado em

/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/
Abrir no Testador de Regex
EntradaResultadoGrupos
https://www.youtube.com/watch?v=dQw4w9WgXcQ✓ CorrespondedQw4w9WgXcQ
https://youtu.be/dQw4w9WgXcQ?t=42✓ CorrespondedQw4w9WgXcQ
youtube.com/shorts/abcdefghijk✓ Correspondeabcdefghijk
https://m.youtube.com/watch?v=dQw4w9WgXcQ&list=PL1✓ CorrespondedQw4w9WgXcQ
https://vimeo.com/123456✗ Sem correspondência
https://www.youtube.com/watch?v=short✗ Sem correspondência
https://youtube.com/@channel✗ Sem correspondência

Como o padrão funciona

ParteSignificado
(?:https?:\/\/)?(?:www\.|m\.)?Scheme e subdomínio www ou m opcionais
youtube\.com\/(?:watch\?v=|embed\/|shorts\/)URLs de assistir, incorporar e Shorts
youtu\.be\/Ou os links curtos youtu.be
([\w-]{11})Grupo 1: o ID de vídeo de 11 caracteres
(?:[?&#].*)?Parâmetros extras opcionais, como &t=42 ou &list=…

Exemplos de código

JavaScript

const re = /^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/;
re.test(value); // true or false

Python

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;

Notas e limitações

O grupo 1 guarda o ID do vídeo, que você pode usar em https://www.youtube.com/embed/ID ou na URL da miniatura https://i.ytimg.com/vi/ID/hqdefault.jpg. A URL de assistir deve ter v= como primeiro parâmetro.

Perguntas frequentes

Qual é a regex para ID do vídeo do YouTube a partir de URL?
/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/ — ela verifica a string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Dos exemplos testados, estes correspondem: https://www.youtube.com/watch?v=dQw4w9WgXcQ, https://youtu.be/dQw4w9WgXcQ?t=42, youtube.com/shorts/abcdefghijk, https://m.youtube.com/watch?v=dQw4w9WgXcQ&list=PL1. Os outros não.
Como testo essa regex?
Clique em “Abrir no Testador de Regex” — o padrão, as flags e o texto de exemplo são carregados automaticamente, e as correspondências são destacadas enquanto você edita.