我是RegEx的初学者,所以我正在阅读stackoverflow上的regEx信息页面。
例如:/(d)。\ 1 /匹配并捕获爸爸'在" abcdadef"而 /(?:.d){2}/匹配,但没有捕获' cdad'。
我试过了: -
var pattern=/(d).\1/
var val="abcdadef";
console.log(pattern.exec(val));
它显示了["爸爸"," d"]的数组,但我不知道为什么? 正如在信息中所说的那样,它只是捕获了父亲"为什么它在数组中捕获两个值? 什么是' \ 1'在模式的最后?
请向我提供有关如何使用它的更多信息。
谢谢: - )
答案 0 :(得分:5)
当你使用()时,你告诉正则表达式匹配in之间的()并将它存储为一个捕获组。每场比赛都有自己的捕捉组。试试你的表达here。正则表达式匹配对象通常是一个集合,其中包含正则表达式的整个匹配,然后捕获该匹配的组。
编辑:根据您在下面的评论,这是另一种模式(m).\1
,我们正在执行正则表达式的文本是妈妈。
在此示例中,正则表达式将尝试执行以下操作:
m
,因此我们使用了()
,它将匹配存储在捕获组中。此捕获组将在稍后进入匹配集合。.
将匹配除换行符以外的任何字符,因此在我们的情况下,它将与文字u
匹配。\1
将尝试使用第一个匹配组作为模式匹配下一个字符,并且在我们的情况下将是文字m
。最终结果将是mum
的正则表达式匹配,唯一的捕获组将是m
。