freeCodeCamp/guide/chinese/certifications/javascript-algorithms-and-d.../regular-expressions/reuse-patterns-using-captur.../index.md

1.3 KiB
Raw Blame History

title localeTitle
Reuse Patterns Using Capture Groups 使用捕获组重用模式

使用Capture Group重用模式

提示1

给出以下代码:

let testString = "test test test "; 
 let reRegex =/(test)\s\1/; 
 let result = reRegex.test(testString); 

result将仅匹配test test因为此示例中的\1代表与最近匹配的第一个捕获组(test)相同的文本。

如果我们要正面翻译正则表达式,它看起来像这样:

let re = /(test)\s\1; 
 let literalRe = /test\stest; 

realiteralRe都会匹配相同的东西。

提示2

鉴于以下代码:

let testString = "test test test "; 
 let reRegex =/(test)(\s)\1\2\1/; 
 let result = reRegex.test(testString); 

将匹配整个test test test因为: \1重复(测试) \2重复(\ s

提示3

代码如下:

let testString = "test test test test test test"; 
 let reRegex =/(test)(\s)\1\2\1/g; 
 let result = reRegex.test(testString); 

因为我们使用了\g ,我们的正则表达式在第一次完全匹配( test test test )之后没有返回并匹配所有重复。

剧透警报 - 提前解决!

解:

let repeatNum = "42 42 42"; 
 let reRegex =  /^(\d+)\s\1\s\1$/; 
 let result = reRegex.test(repeatNum);