7

私が開発しているシステムでは、YouTube リンクを次の形式で認識する必要があります。

[YouTube]YouTube URL[/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 URLを認識するのに役立つ人がいますか?

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.」in Youtube URLs はオプションです。
".*" の代わりに (\.[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 に答える