Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regular Expression Youtube URL

Tags:

regex

youtube

I am using this regular expression to validate youtube urls.

^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$

it works great.

But I have a problem with this.

If user enters http://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sports it works fine

Now I want to avoid this

http://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sportshttp://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sportshttp://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sports

same URL pasted multiple times(thrice in our case). For this regular expression it is also a valid youtube address.

I am looking for a workaround.

like image 749
TriNitroToluene Avatar asked Dec 06 '22 18:12

TriNitroToluene


1 Answers

Don't allow another ? after the first one:

^http:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$

An actual ? in the query parameters should be escaped, so this approach shouldn't exclude any valid URLs.

like image 68
Laurence Gonsalves Avatar answered Dec 31 '22 17:12

Laurence Gonsalves