我在互联网上找到了一种方法,可以从网址中检索YouTube视频的ID。
就是这样。
var vid; var results; results = url.match("[\\?&]v=([^&#]*)"); vid = ( results === null ) ? url : results[1];
ID将包含在“vid”中。
我不明白,我觉得很有趣,想知道是这个。
results = url.match("[\\?&]v=([^&#]*)");
它是如何运作的?
答案 0 :(得分:11)
它使用regular expression从完整的网址中提取视频的ID。这个特殊的正则表达式分解如下:
[\\?&]
是一个角色类。它匹配单个字符&
或?
。 (问号是JavaScript正则表达式中的特殊字符,因此必须通过在其前面加上反斜杠进行转义。反斜杠是JavaScript字符串中的特殊字符,因此 it 也必须进行转义,因此双反斜杠。这在正则表达式中相当普遍。)v=
与文字字符串v=
匹配。(
开始一个捕获组,所以直到下一个)
的所有内容都将放入返回数组中的单独条目中。[^&#]*
任意数量的字符(包括无),直到找到&
或#
为止。括号表示上面的字符类,^
反转类,因此它包括除之前列出的所有字符。 *
表示前面的字符类要匹配零次或多次。)
结束捕获组。假设匹配成功,results[0]
包含整个网址,results[1]
包含第一个捕获组的内容,即视频的ID。
答案 1 :(得分:1)
这与youtube网址中的视频ID匹配。
[\\?&]v=
//在查询字符串
([^&#]*)
//匹配其他内容直到下一个&或#
视频ID存储在results[1]
(假设匹配)