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
中包含的字符,谢谢您指出这一点。我已经更新了我的答案。你是对的,我试过:)对不起,没有足够的代表投票:)