1.3 KiB
1.3 KiB
title, localeTitle
| 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/;
rea和literalRe都会匹配相同的东西。
提示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);