我正在尝试做一个嵌入YouTube视频的正则表达式。
现在,这是我能做的基本工作:
http:\/\/www\.youtube\.com\/watch\?.*v=([a-z0-9-_]+)它具有正常的、可识别的YouTube网址,然后匹配唯一的视频代码。不幸的是,事实证明这对我的用户要求太高了。他们没有输入超文本传输协议,缺少万维网,缺少超文本传输协议和万维网,有时他们输入的是用/v/*替换/watch?v=*,在所有这些情况下,它都会破坏格式。
我尝试做的是允许'youtube.com‘前后的任何东西,这样无论输入是什么,它都是近乎完美的。下面的例子..
http://www.youtube.com/watch?v=([a-z0-9-_]+) --- the normal, unmolested input
http://youtube.com/watch?v=([a-z0-9-_]+) --- missing WWW
www.youtube.com/watch?v=([a-z0-9-_]+) --- missing HTTP
youtube.com/watch?v=([a-z0-9-_]+) --- missing HTTP and WWW
http://www.youtube.com/v/([a-z0-9-_]+) --- substituted watch?v= for /v/
http://youtube.com/v/([a-z0-9-_]+) --- substituted watch?v= for /v/ AND missing WWW
www.youtube.com/v/([a-z0-9-_]+) --- substituted watch?v= for /v/ AND missing HTTP
youtube.com/v/([a-z0-9-_]+) --- substituted watch?v= for /v/ AND missing HTTP and WWW这是一个我认为它应该可以工作的改变(允许任何字符),但也许我遗漏了什么?
[.]+\youtube\.com\/[.]+([a-z0-9-_]+)我为我的含糊或无知道歉,但是我已经尝试了几次修改,但都没有效果。也许我正在寻找的东西是不可能的。老实说,我试着理解正则表达式,也许是时间的问题,也可能是我的问题,但我无法破译它。从我的角度来看,这是非常隐秘的。
我真诚地感谢每一位抽出时间的人..
发布于 2011-06-09 10:51:19
这个应该可以..。
(?:http://)?(?:www\.)?youtube\.com/(?:watch\?v=|v/)([\w-]+)RegExr。
这将匹配URL,并将YouTube视频id放入捕获组1中。
它首先匹配一个可能的http://,然后匹配一个可能的www.,然后总是匹配youtube.com/,然后匹配watch?v=或v/,然后匹配\w字符类和-。
发布于 2011-06-09 10:55:58
在字符类中,.不是一个特殊字符,它的字面意思是一个点。因此[.]+的意思是“一个或多个点”。我不知道你可能会遇到什么其他问题,但它应该是.+ (或者可能是.*,因为"youtube“可以是字符串的开头)。
https://stackoverflow.com/questions/6287584
复制相似问题