use strict;
my $str = 'thisdoesnotmatch
seulement11
l_la5XiQJdk
Qa5McwO3qY0
https://www.youtube.com/w/0tI4nOURzKI
https://www.youtube.com/shorts/Qa5McwO3qY0
youtube.com/watch?v=vpiMAaPTze8
//youtu.be/DFYRQ_zQ-gk
youtu.be/DFYRQ_zQ-gk
http://www.youtube.com/watch?v=vpiMAaPTze8
http://youtu.be/l_la5XiQJdk
http://youtu.be/NLqAF9hrVbY
https://youtu.be/qT47KF5pvfw
https://youtu.be/zImHyTyYhM8?t=4s
https://youtu.be/DFYRQ_zQ-gk?t=120
https://youtu.be/DFYRQ_zQ-gk
http://youtu.be/DFYRQ_zQ-gk
//youtu.be/DFYRQ_zQ-gk
http://www.youtube-nocookie.com/watch?v=NLqAF9hrVbY
https://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
http://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
//www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
http://www.youtube.com/v/dQw4w9WgXcQ
http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
http://www.youtube.com/embed/NLqAF9hrVbY
https://www.youtube.com/embed/NLqAF9hrVbY
http://www.youtube.com/embed/dQw4w9WgXcQ
https://www.youtube.com/embed/DFYRQ_zQ-gk?autoplay=1
https://www.youtube.com/embed/DFYRQ_zQ-gk
http://www.youtube.com/embed/DFYRQ_zQ-gk
//www.youtube.com/embed/DFYRQ_zQ-gk
www.youtube.com/embed/DFYRQ_zQ-gk
https://youtube.com/embed/DFYRQ_zQ-gk
http://youtube.com/embed/DFYRQ_zQ-gk
//youtube.com/embed/DFYRQ_zQ-gk
youtube.com/embed/DFYRQ_zQ-gk
http://www.youtube.com/e/dQw4w9WgXcQ
http://www.youtube.com/watch?v=NLqAF9hrVbY
http://www.youtube.com/watch?v=spDj54kf-vY&feature=g-vrec
http://www.youtube.com/watch?v=spDj54kf-vY&feature=youtu.be
https://www.youtube.com/watch?v=MRl7cxSOXdU&feature=youtu.be
https://www.youtube.com/watch?v=q07SQFmL4rM
https://www.youtube.com/watch?v=q07SQFmL4yM
https://www.youtube.com/watch?v=zImHyTyYhM8&t=4s
http://www.youtube.com/watch?v=dQw4w9WgXcQ
https://www.youtube.com/watch?v=DFYRQ_zQ-gk&feature=featured
https://www.youtube.com/watch?v=DFYRQ_zQ-gk
http://www.youtube.com/watch?v=DFYRQ_zQ-gk
//www.youtube.com/watch?v=DFYRQ_zQ-gk
www.youtube.com/watch?v=DFYRQ_zQ-gk
http://www.youtube.com/watch?v=DFYRQ_zQ-gk
//www.youtube.com/watch?v=DFYRQ_zQ-gk
www.youtube.com/watch?v=DFYRQ_zQ-gk
https://youtube.com/watch?v=DFYRQ_zQ-gk
http://youtube.com/watch?v=DFYRQ_zQ-gk
//youtube.com/watch?v=DFYRQ_zQ-gk
youtube.com/watch?v=DFYRQ_zQ-gk
https://www.youtube.com/watch?time_continue=4&v=zImHyTyYhM8
https://www.youtube.com/watch?v=zImHyTyYhM8
This working:
https://www.youtube.com/watch?v=zImHyTyYhM8&time_continue=4&
http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ
http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=player_embedded
http://www.youtube.com/?feature=player_embedded&v=dQw4w9WgXcQ
http://www.youtube.com/?aa=aa&bbb=bbb&cccc=cccc&v=dQw4w9WgXcQ
http://www.youtube.com/?aa=aa&bbb=bbb&v=dQw4w9WgXcQ&cccc=cccc
http://www.youtube.com/?aa=aa&v=dQw4w9WgXcQ&bbb=bbb&cccc=cccc
https://m.youtube.com/watch?v=DFYRQ_zQ-gk
http://m.youtube.com/watch?v=DFYRQ_zQ-gk
//m.youtube.com/watch?v=DFYRQ_zQ-gk
m.youtube.com/watch?v=DFYRQ_zQ-gk
------------------------------- All wrong urls -------------------------------------------------
http://www.youtube.com/user/username#p/u/11/dQw4w9WgXcQ
http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/dQw4w9WgXcQ
http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo
http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I
http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/2/PPS-8DMrAn4
http://gdata.youtube.com/feeds/api/videos/NLqAF9hrVbY
https://www.youtube.com/HamdiKickProduction?v=DFYRQ_zQ-gk
http://www.youtube.com/?v=dQw4w9WgXcQ
http://www.youtube.com/&v=dQw4w9WgXcQ
www.youtube.com/watch/ccc/ddd/DFYRQ_zQ-gk&feature=featured
//www.youtube.com/vk/DFYRQ_zQwww
//www.youtube.com/sdasdsadsd/DFYRQ_zQwww/fdfsdf/sdfsdfsdf
www.youtube.com/awssssssss
youtu.be/e/e/e/e/e/DFYRQ_zQwww/d/d/d/d/a/sfd/asd/as/DFYRQ_zQwww
https://www.youtube.com/v=0tI4nOURzKI
www.youtube.com/v=/DFYRQ_zQwww
www.youtube.com/vDFYRQ_zQwww
';
my $regex = qr/^(?:https?:)?(?:\/\/)?(?:(?:www\.|m\.)?youtube(?:-nocookie)?\.com\/(?:v\/|e\/|embed\/|w\/|(?:watch\?v=|(?:(?:\?|watch\?)(?:[\w]+=[\w]+&?)+)v=)?|shorts\/)|youtu\.be\/(?:watch\?v=)?)([\w-]{11})(?=[^\w-]|$)(?![?=&+%\w.-]*(?:['\"][^<>]*>|<\/a>))[?=&+%\w.-]*$/imp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html