gpt4 book ai didi

javascript - 为什么捕获组会导致双重匹配正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:24 24 4
gpt4 key购买 nike

考虑这两个脚本:

第一个:"".match(/(\s)/)

第二个:"".match(/\s/)

结果

第一:["",""]

第二个:[""]

我不明白这种行为。据我所知,捕获组/括号的目的是让一部分匹配稍后在正则表达式中再次引用。但显然这还不是全部。或者此行为是否特定于 ma​​tchsplit 方法。

最佳答案

第一个脚本:第一个结果是整个模式,第二个是捕获组

第二个脚本:唯一的结果是整个模式。

捕获组不仅在模式后面引用,它们也显示在结果中。

当您使用带有拆分的捕获组时,捕获组将返回结果,并且由于分隔符应该对字符串进行切片,因此您获得 ["", "", ""]< 是正常的 作为结果,
"" 作为输入字符串,/(\s)/ 作为模式。

More informations about split.

当您编写 "".match(/(\s)/) 时,返回的结果是第一个匹配项。这个结果是独一无二的,包含:

  • 整场比赛
  • 捕获组
  • 比赛索引
  • 输入字符串

当您编写 "".match(/(\s)/g) 时,返回的结果是所有匹配项:

  • 整场比赛 1
  • 整场比赛 2
  • 等等

(在当前情况下你只有一场比赛)

这种行为是正常的。 match 方法作为两种不同的行为(有或没有 /g)。它是一种二合一的功能。为了在没有 g 修饰符的 PHP(或其他语言)中进行比较,您有两个不同的函数:preg_matchpreg_match_all

关于javascript - 为什么捕获组会导致双重匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18577704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com