0

YouTubeビデオIDを抽出する次の正規表現があります

var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/;

たとえば、これは一致します

http://www.youtube.com/watch?v=9bZkp7q19f0&desc=gangnam

ただし、ビデオ パラメータが最初に来ない場合があり、その結果、以下が一致しません。

http://www.youtube.com/watch?desc=gangnam&v=9bZkp7q19f0

v パラメーターの前に or があることを説明するために、正規表現に or 句をどのように含めます&??

以下を試しましたが、うまくいきませんでした

var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\[?$]v=)([^#\&\?]*).*/;
4

2 に答える 2

0

時計の前に av= があることを確認するために、肯定的な先読みを含めることができます。

^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?(v=|.*(?=v=)))([^#\&\?]*).*

編集: また、正規表現をさらに調べると、フォーマットが間違っているため、embed/ で一致します。or ステートメントを使用するときは、ステートメントを括弧でグループ化する必要があります。そうしないと、式の前の部分が含まれず、それらだけで一致します。「.」などの特殊文字もエスケープする必要があります。これは任意の文字として扱われるため

私はそれを少しきれいにしました:

/^.*youtu(\.)?be(\.com)?(\/|v\/|u\/\w\/)(embed\/|watch\?(v=|.*(?=v=)))([^#\&\?]+)/
于 2013-08-20T14:01:22.200 に答える