正则表达式未按预期工作 /(d).1/

RegEx not working as expected /(d).1/

本文关键字:工作 正则表达式      更新时间:2023-09-26

我是正则表达式的初学者,所以我正在阅读堆栈溢出上的正则表达式的信息页面。

例如:/(d).''1/匹配并捕获"abcdadef"中的"爸爸",而 /(?:.d){2}/匹配但不捕获"cdad"。

我试过了:-

var pattern=/(d).'1/

var val="abcdadef";
console.log(pattern.exec(val));

它显示了["爸爸","d"]的数组,但我不知道为什么?正如信息中所述,它只是捕获"爸爸",为什么它会捕获数组中的两个值?模式末尾的"''1"有什么用?

请向我提供有关如何使用它的更多信息。

谢谢 :-)

当你使用()时,你告诉正则表达式匹配()之间的in并将其存储为捕获组。每场比赛都有自己的捕获组。在这里试试你的表达方式。正则表达式匹配对象通常是一个集合,其中包含正则表达式的整个匹配项,后跟捕获该匹配项的组。

编辑:根据您在下面的评论,这是另一种模式(m).'1,我们正在执行正则表达式的文本是mum。在此示例中,正则表达式将尝试执行以下操作:

  1. 匹配文字m,因此我们使用了(),它将匹配存储在捕获组中。此捕获组稍后将进入匹配集合。
  2. .将匹配换行符以外的任何字符,因此在我们的例子中,它将匹配文字u
  3. '1将尝试使用第一个匹配组作为模式来匹配下一个字符,在我们的例子中,这将是文字m

最终结果将是 mum 的正则表达式匹配,唯一的捕获组将是 m