Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
988 views
in Technique[技术] by (71.8m points)

regex - Regular Expression Youtube URL

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...