RegEx未按预期工作/(d)。\ 1 /

时间:2015-03-11 07:38:26

标签: javascript arrays regex

我是RegEx的初学者,所以我正在阅读stackoverflow上的regEx信息页面。

  

例如:/(d)。\ 1 /匹配并捕获爸爸'在" abcdadef"而   /(?:.d){2}/匹配,但没有捕获' cdad'。

我试过了: -

var pattern=/(d).\1/


var val="abcdadef";

console.log(pattern.exec(val));

它显示了["爸爸"," d"]的数组,但我不知道为什么? 正如在信息中所说的那样,它只是捕获了父亲"为什么它在数组中捕获两个值? 什么是' \ 1'在模式的最后?

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

谢谢: - )

1 个答案:

答案 0 :(得分:5)

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

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

  1. 匹配文字m,因此我们使用了(),它将匹配存储在捕获组中。此捕获组将在稍后进入匹配集合。
  2. .将匹配除换行符以外的任何字符,因此在我们的情况下,它将与文字u匹配。
  3. \1将尝试使用第一个匹配组作为模式匹配下一个字符,并且在我们的情况下将是文字m
  4. 最终结果将是mum的正则表达式匹配,唯一的捕获组将是m