Regex para el ID de video de YouTube desde una URL

Usa /^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/ para comprobar que una cadena completa es un ID de video de YouTube válido desde una URL. Cada ejemplo de abajo está probado contra el patrón, y puedes abrirlo en el Probador de Regex con las muestras ya cargadas.

Actualizado el

/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/
Abrir en el Probador de Regex
EntradaResultadoGrupos
https://www.youtube.com/watch?v=dQw4w9WgXcQ✓ CoincidedQw4w9WgXcQ
https://youtu.be/dQw4w9WgXcQ?t=42✓ CoincidedQw4w9WgXcQ
youtube.com/shorts/abcdefghijk✓ Coincideabcdefghijk
https://m.youtube.com/watch?v=dQw4w9WgXcQ&list=PL1✓ CoincidedQw4w9WgXcQ
https://vimeo.com/123456✗ No coincide
https://www.youtube.com/watch?v=short✗ No coincide
https://youtube.com/@channel✗ No coincide

Cómo funciona el patrón

ParteSignificado
(?:https?:\/\/)?(?:www\.|m\.)?Esquema opcional y subdominio www o m
youtube\.com\/(?:watch\?v=|embed\/|shorts\/)URLs de watch, embed y Shorts
youtu\.be\/O los enlaces cortos youtu.be
([\w-]{11})Grupo 1: el ID de video de 11 caracteres
(?:[?&#].*)?Parámetros extra opcionales como &t=42 o &list=…

Ejemplos 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 y limitaciones

El grupo 1 contiene el ID del video, que puedes usar en https://www.youtube.com/embed/ID o en la URL de la miniatura https://i.ytimg.com/vi/ID/hqdefault.jpg. La URL de watch debe tener v= como primer parámetro.

Preguntas frecuentes

¿Cuál es la regex para el ID de video de YouTube desde una URL?
/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, coinciden estos: 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. Los demás no.
¿Cómo pruebo esta regex?
Haz clic en «Abrir en el Probador de Regex»: el patrón, los flags y el texto de muestra se cargan automáticamente, y las coincidencias se resaltan mientras editas.