这个正则表达式:
(youtube.com|youtu.be).*(v=)([a-zA-Z0-9_-]+)
应匹配此字符串:
http://www.youtube.com/watch?v=PnqCS4Lvy5E
它也成功匹配此字符串:
http://www.youtube.com/watch?v=
哪个错了。如何在v =之后确保链接确实有字符串? (不能使用美元符号,因为v
可以在链接中的任何位置)
答案 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