2009-11-19 20 views
5

私はYouTubeビデオのIDを取得することができるインターネット上の方法を見つけたurl。私はインターネットで誰かがそれを私に説明することができる "[\?&] v =([^&#] *)"を見つけた

これです。

 
var vid; 
var results; 
results = url.match("[\\?&]v=([^&#]*)"); 
vid = (results === null) ? url : results[1]; 

"id"は "vid"に含まれます。

私は理解していないと私は興味深いと知りたいのはこれです。

 
results = url.match("[\\?&]v=([^&#]*)"); 

どのように動作しますか?

+0

ストレート質問です。 – powtac

答えて

10

完全なURLからビデオのIDを抽出するには、regular expressionを使用しています。この特定の正規表現は次のように分類されます:

  1. [\\?&]は文字クラスです。それは&または?のいずれかの1文字に一致します。 (疑問符はJavaScriptの正規表現では特殊文字なので、バックスラッシュを前に置いてエスケープする必要があります。もエスケープする必要があります。つまり、二重バックスラッシュです。正規表現では一般的です)。
  2. v=は、リテラル文字列v=と一致します。
  3. (はキャプチャグループを開始します。したがって、次の)までのすべてが返される配列の別のエントリに配置されます。
  4. [^&#]*&または#が見つかるまで、任意の文字数(なしを含む)。角括弧は上記のような文字クラスを示し、^はクラスを反転させて、を除く)のすべての文字を含むようにします。 *は、先行する文字クラスが0回以上一致することを示します。
  5. )は、キャプチャグループを終了します。一致を仮定

が成功し、results[0]全体URLを含み、results[1]最初キャプチャグループ、ビデオの、すなわちIDの内容を含みます。

+3

ステップバイステップを説明する+1;それは最も有用な答えです投稿 –

+0

+1私はアンドレアスグレッチに同意します – a432511

+0

私の投稿を削除しました。あなたのものは良いです:-) – a432511

1

これは、YouTubeのYouTubeの動画IDと一致します。

[\\?&]v= //クエリ文字列に

([^&#]*) //は、動画IDが(results[1]に保存されている次の&に他のすべて最高にマッチするか、#

=最初の?V =または& Vを見つけます一致があると仮定して)

関連する問題