7

在我正在开发的系统中,我需要识别以下格式的 youtube 链接

[youtube]youtube 网址[/youtube]

目前我到达了这个正则表达式:

#\[youtube\]http://www.youtube\.(.*)/watch\?v=([a-zA-Z0-9_-]*)\[\/youtube\]#s

但是这种模式无法识别像这样的 url

[youtube] http://www.youtube.com/watch?v=s3wXkv1VW54&feature=fvst[/youtube]

注意feature=fvst

有人可以帮助我识别所有可能的 youtube 网址吗?

4

2 回答 2

4

怎么样

|\[youtube\]http://www.youtube\.(.*?)/watch\?v=([a-zA-Z0-9_-]*)[%&=#a-zA-Z0-9_-]*\[\/youtube\]|s

编辑:更改正则表达式以仅将视频 ID 保留在括号内。

于 2010-02-08T10:11:41.950 回答
1

注意:
我会在 URL (/i) 上执行不区分大小写的匹配
。匹配任何东西;采用 \。而是匹配 URL
另外,“www”。在 Youtube URL 中是可选的。
使用 (\.[az]+){1,2} 而不是 ".*" 来匹配 ".com", ".co.uk", .. 在 "youtube" 之后

假设 "&feature" 部分是可选的,则正则表达式将是:

/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&feature=([a-z]+))?\[\/youtube\]/is

假设“&feature”部分是可选的,并且可以有除“feature”之外的其他参数:

/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&([a-z]+)=([a-z0-9_-])+)*?\[\/youtube\]/is
于 2010-02-08T10:38:57.547 回答