为什么此链接与此正则表达式匹配?

时间:2014-04-23 11:38:17

标签: regex

这个正则表达式:

(youtube.com|youtu.be).*(v=)([a-zA-Z0-9_-]+)

应匹配此字符串:

http://www.youtube.com/watch?v=PnqCS4Lvy5E

它也成功匹配此字符串:

http://www.youtube.com/watch?v=

哪个错了。如何在v =之后确保链接确实有字符串? (不能使用美元符号,因为v可以在链接中的任何位置)

1 个答案:

答案 0 :(得分:1)

使用+代替*并使用^$来表示字符串的开头和结尾:

^https?:\/\/www\.(youtube.com|youtu.be).*(v=)([a-zA-Z0-9_-]+)$

,要在v=之后指定最少字符数,请执行:

^https?:\/\/www\.(youtube.com|youtu.be).*(v=)([a-zA-Z0-9_-]{3,})$ // here 3 is the minimum numbers of accepted chars in the string

演示:http://regex101.com/r/rP1lN3