我发现这个“[\\?&] v =([^&#] *)”在互联网上可以有人解释给我

时间:2009-11-19 00:30:16

标签: javascript regex parsing youtube

我在互联网上找到了一种方法,可以从网址中检索YouTube视频的ID。

就是这样。

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

ID将包含在“vid”中。

我不明白,我觉得很有趣,想知道是这个。

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

它是如何运作的?

2 个答案:

答案 0 :(得分:11)

它使用regular expression从完整的网址中提取视频的ID。这个特殊的正则表达式分解如下:

  1. [\\?&]是一个角色类。它匹配单个字符&?。 (问号是JavaScript正则表达式中的特殊字符,因此必须通过在其前面加上反斜杠进行转义。反斜杠是JavaScript字符串中的特殊字符,因此 it 也必须进行转义,因此双反斜杠。这在正则表达式中相当普遍。)
  2. v=与文字字符串v=匹配。
  3. (开始一个捕获组,所以直到下一个)的所有内容都将放入返回数组中的单独条目中。
  4. [^&#]*任意数量的字符(包括无),直到找到&#为止。括号表示上面的字符类,^反转类,因此它包括之前列出的所有字符。 *表示前面的字符类要匹配零次或多次。
  5. )结束捕获组。
  6. 假设匹配成功,results[0]包含整个网址,results[1]包含第一个捕获组的内容,即视频的ID。

答案 1 :(得分:1)

这与youtube网址中的视频ID匹配。

[\\?&]v= //在查询字符串

中找到第一个?v =或& v =

([^&#]*) //匹配其他内容直到下一个&或#

视频ID存储在results[1](假设匹配)