正则表达式Youtube URL

Tri*_*ene 4 regex youtube

我正在使用此正则表达式来验证youtube网址.

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

它很棒.

但我有一个问题.

如果用户输入http://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sports,则可以正常使用

现在我想避免这种情况

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
Run Code Online (Sandbox Code Playgroud)

多次粘贴相同的URL(在我们的例子中是三次).对于此正则表达式,它也是有效的YouTube地址.

我正在寻找一种解决方法.

Lau*_*ves 8

?在第一个之后不要允许另一个:

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

?应该对查询参数中的实际内容进行转义,因此此方法不应排除任何有效的URL.