我正在尝试创建一个用于嵌入YouTube视频的正则表达式。
目前,这是我拥有的基本工作内容:
http:\/\/www\.youtube\.com\/watch\?.*v=([a-z0-9-_]+)
它具有正常、可识别的YouTube URL,然后匹配唯一的视频代码。不幸的是,这对我的用户来说要求太高了。他们输入时缺少HTTP,缺少WWW,两者都缺少,有时他们将/watch?v=*替换为/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-_]+)
如果我表达含糊或者无知,那么我深感抱歉,我尝试了几种改变但都没有成功。或许我所寻找的是不可能的。我发誓尝试理解正则表达式,也许是时间的原因或者只是我自己,但我无法解释它。从我的角度来看,这是超越了秘密的。
真诚地感谢任何抽出一分钟时间的人...