Regex für YouTube-Video-ID aus URL

Mit /^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/ prüfst du, ob eine komplette Zeichenkette eine gültige YouTube-Video-ID aus einer URL ist. Jedes Beispiel unten wurde gegen das Muster getestet. Du kannst es im Regex-Tester mit vorgeladenen Beispielen öffnen.

Aktualisiert am

/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/
Im Regex-Tester öffnen
EingabeErgebnisGruppen
https://www.youtube.com/watch?v=dQw4w9WgXcQ✓ TrefferdQw4w9WgXcQ
https://youtu.be/dQw4w9WgXcQ?t=42✓ TrefferdQw4w9WgXcQ
youtube.com/shorts/abcdefghijk✓ Trefferabcdefghijk
https://m.youtube.com/watch?v=dQw4w9WgXcQ&list=PL1✓ TrefferdQw4w9WgXcQ
https://vimeo.com/123456✗ Kein Treffer
https://www.youtube.com/watch?v=short✗ Kein Treffer
https://youtube.com/@channel✗ Kein Treffer

So funktioniert das Muster

TeilBedeutung
(?:https?:\/\/)?(?:www\.|m\.)?Optionales Schema und www- oder m-Subdomain
youtube\.com\/(?:watch\?v=|embed\/|shorts\/)Watch-, Embed- und Shorts-URLs
youtu\.be\/Oder die kurzen youtu.be-Links
([\w-]{11})Gruppe 1: die 11-stellige Video-ID
(?:[?&#].*)?Optionale zusätzliche Parameter wie &t=42 oder &list=…

Codebeispiele

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;

Hinweise und Einschränkungen

Gruppe 1 enthält die Video-ID, die du in https://www.youtube.com/embed/ID oder die Thumbnail-URL https://i.ytimg.com/vi/ID/hqdefault.jpg einsetzen kannst. Die Watch-URL muss v= als ersten Parameter haben.

Häufige Fragen

Wie lautet der Regex für die YouTube-Video-ID aus einer URL?
/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/ — er prüft die ganze Zeichenkette. Was jeder Teil macht, siehst du in der Tabelle oben.
Welche Beispiele passen?
Von den getesteten Beispielen passen diese: 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. Die anderen nicht.
Wie teste ich diesen Regex?
Klick auf „Im Regex-Tester öffnen“ — Muster, Flags und Beispieltext werden automatisch geladen, und Treffer werden beim Bearbeiten hervorgehoben.