Javascript 引用与所需字符串不匹配的\1正则表达式

Javascript 引用与所需字符串不匹配的\1正则表达式,javascript,regex,Javascript,Regex,我正在研究这个正则表达式,我不知道它是如何工作的 /^(\d+)\s\1\s\1$/ 我知道 ^ is start of line () shows capture group \d+ shows digits \s is whitespace \1 shows to match first group $ the end 令人困惑的部分是这里的美元 以及为什么它与“40”匹配,而不是“40”,$$的角色与“字符串结尾”匹配。按照定义正则表达式模式的方式,它不应该与任何一个字符串匹配

我正在研究这个正则表达式,我不知道它是如何工作的

/^(\d+)\s\1\s\1$/
我知道

^ is start of line 
() shows capture group
\d+ shows digits 
\s is whitespace 
\1 shows to match first group
$ the end 
令人困惑的部分是这里的美元 以及为什么它与
“40”
匹配,而
不是“40”
$
$
的角色与“字符串结尾”匹配。按照定义正则表达式模式的方式,它不应该与任何一个字符串匹配,因为
40
在字符串末尾之前的末尾有一个额外的空格,
40
在第三个
40
之后和字符串末尾之前有额外的空格和数字


如果删除
$
,则它将匹配两个字符串或以
40
开头的任何字符串,因此,例如,它还将匹配
40 test
\1
引用正则表达式中的第一个捕获组<代码>\2将指第二个捕获组,\n将指第n个捕获组

在正则表达式
/^(\d+)\s\1\s\1$/
中<代码>\1将匹配第一个捕获组
(\d+)
匹配的唯一一组数字

$
中的
/^(\d+)\s\1\s\1$/
表示它应该以多个数字结尾


^
中的
/^(\d+)\s\1\s\1$/
表示它应该以一个以上的数字开始

我把这个问题的答案写为/^(\d+)(\s)\1\2\1$/g,它成功了。如果我是正确的,第一个\1将产生(数字、空格、数字)。\2将添加构成它的空格(数字、空格、数字、空格)。最后一个数字\1加上最后一个数字,使之成为(数字\s数字\s数字)。^和$开始和结束正则表达式。

提示:有多少个
\1
实例?你能通过添加更多的来匹配吗?两个实例,因为我需要匹配三个组,而不是4个。我对它的工作原理有疑问:)@Amadan你是说美元在这里是“没有别的”差不多,是的。正如您所说,它是“字符串结束”(或“行结束”,取决于
m
标志),而
^
是“字符串开始”(或行)。该模式表示,从字符串的开始到结束,将有三个相同的东西夹在中间,它们之间有一些空格。如果省略了
$
,则
“40 foo”
将找到匹配项。如果你省略了
^
,那么
foo40“
会。如果你同时省略了这两个,那么
“foo40”
就可以了。如果你想要三组,和
“40“
被拒绝了,然后一切正常了,不是吗?现在完全明白了使用“^”和$对我来说很困惑现在我明白了谢谢。这就是全部。这在FCC是一个挑战。你很了不起,^意味着它应该以一个数字开头?没错@Maria你是对的。在正则表达式中,
^
之后的任何内容都应该是匹配的开头。like^\s表示行的开头应该是空格?明白了,谢谢
\s
表示包含空格的任何空格。您可以在这里@Thefourthbird检查
\s
中包含的字符,谢谢您指出这一点。我已经更新了我的答案。你是对的,我试过:)对不起,没有足够的代表投票:)