So funktioniert das Muster
| Teil | Bedeutung |
|---|---|
(?: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 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;
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.
Regex-Tester
Gib ein Muster ein und sieh zu, wie Übereinstimmungen in deinem Testtext in Echtzeit hervorgehoben werden.