Regex lấy YouTube video ID từ URL

Dùng /^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/ để kiểm tra toàn bộ chuỗi có phải là YouTube video ID hợp lệ từ URL hay không. Mỗi ví dụ bên dưới đều đã được thử với mẫu này, và bạn có thể mở trong Regex Tester với sẵn dữ liệu mẫu.

Cập nhật

/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/
Mở trong Regex Tester
Đầu vàoKết quảNhóm
https://www.youtube.com/watch?v=dQw4w9WgXcQ✓ KhớpdQw4w9WgXcQ
https://youtu.be/dQw4w9WgXcQ?t=42✓ KhớpdQw4w9WgXcQ
youtube.com/shorts/abcdefghijk✓ Khớpabcdefghijk
https://m.youtube.com/watch?v=dQw4w9WgXcQ&list=PL1✓ KhớpdQw4w9WgXcQ
https://vimeo.com/123456✗ Không khớp
https://www.youtube.com/watch?v=short✗ Không khớp
https://youtube.com/@channel✗ Không khớp

Mẫu hoạt động như thế nào

PhầnÝ nghĩa
(?:https?:\/\/)?(?:www\.|m\.)?Giao thức và subdomain www hoặc m (không bắt buộc)
youtube\.com\/(?:watch\?v=|embed\/|shorts\/)URL watch, embed và Shorts
youtu\.be\/Hoặc liên kết rút gọn youtu.be
([\w-]{11})Nhóm 1: video ID gồm 11 ký tự
(?:[?&#].*)?Các tham số bổ sung không bắt buộc, ví dụ &t=42 hoặc &list=…

Ví dụ code

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;

Ghi chú và giới hạn

Nhóm 1 chứa video ID, bạn có thể đưa vào https://www.youtube.com/embed/ID hoặc URL thumbnail https://i.ytimg.com/vi/ID/hqdefault.jpg. URL watch phải có v= là tham số đầu tiên.

Câu hỏi thường gặp

Regex lấy YouTube video ID từ URL là gì?
/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:[?&#].*)?$/ — regex này khớp toàn bộ chuỗi. Xem bảng phía trên để biết mỗi phần làm gì.
Những ví dụ nào khớp?
Trong các ví dụ đã thử, những ví dụ khớp là: 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. Các ví dụ còn lại không khớp.
Làm sao để thử regex này?
Nhấn “Mở trong Regex Tester” — mẫu, cờ và văn bản mẫu sẽ tự động được nạp, và phần khớp sẽ được tô sáng khi bạn chỉnh sửa.