javascript - 我在网上找到这个 "[\\?&]v=([^&#]*)"谁能给我解释一下

标签 javascript regex parsing youtube

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

就是这样。

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

Id 将包含在“vid”中。

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

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

它是如何工作的?

最佳答案

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

  1. [\\?&] 是一个字符类。它匹配单个字符,即 &?。 (问号是 JavaScript 正则表达式中的特殊字符,因此必须通过在其前面加上反斜杠对其进行转义。反斜杠是 JavaScript 字符串中的特殊字符,因此也必须进行转义,因此双反斜杠。这在正则表达式中很常见。)
  2. v= 匹配文字字符串 v=
  3. ( 开始一个捕获组,所以直到下一个 ) 的所有内容都将被放入返回数组中的单独条目中。
  4. [^&#]* 任意数量的字符(包括无字符),直到找到 &#。括号表示字符类,如上所示,^ 反转类,因此它包括所有字符除了在结束括号之前列出的字符。 *表示前面的字符类要匹配零次或多次。
  5. )结束捕获组。

假设匹配成功,results[0]包含整个URL,results[1]包含第一个捕获组的内容,即id视频。

关于javascript - 我在网上找到这个 "[\\?&]v=([^&#]*)"谁能给我解释一下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1760136/

相关文章:

python - 解析具有 "magic"值的文本文件

c - 在 C 中解析日期 Http header 的简单方法是什么?

javascript - Snap.svg 沿路径拖动组

javascript - 在 React 中单击按钮时出现 Cannot GET/[object%20Object]

regex - 创建正则表达式来查找带有括号首字母缩略词的句子 (VBasic Word)

regex - 使用grep的正则表达式问题

parsing - 需要帮助编写批处理文件来读取带有空分隔符的 MS Access .ldb 锁定文件

javascript - 关于 JavaScript new Date() 和 Date.parse()

javascript - 使用 FontAwesome 时文本更改时如何 "refresh"(重新渲染)按钮?

regex - 有没有办法在正则表达式中使用 not (^) 来处理多个字符?