52 lines
1.3 KiB
Markdown
52 lines
1.3 KiB
Markdown
|
---
|
||
|
title: Reuse Patterns Using Capture Groups
|
||
|
---
|
||
|
## Reuse Patterns Using Capture Group
|
||
|
|
||
|
## Hint 1:
|
||
|
Given code below:
|
||
|
```javascript
|
||
|
let testString = "test test test ";
|
||
|
let reRegex =/(test)\s\1/;
|
||
|
let result = reRegex.test(testString);
|
||
|
```
|
||
|
`result` will match only `test test` because `\1` in this example stands for the same text as most recently matched by the 1st capturing group `(test)`.
|
||
|
|
||
|
If we were to lierally translate the regex, it would look something like this:
|
||
|
|
||
|
```js
|
||
|
let re = /(test)\s\1;
|
||
|
let literalRe = /test\stest;
|
||
|
```
|
||
|
Both `rea` and `literalRe` would match the same thing.
|
||
|
|
||
|
## Hint 2:
|
||
|
Given the code below:
|
||
|
```javascript
|
||
|
let testString = "test test test ";
|
||
|
let reRegex =/(test)(\s)\1\2\1/;
|
||
|
let result = reRegex.test(testString);
|
||
|
```
|
||
|
will match whole `test test test` because:
|
||
|
`\1` repeats (test)
|
||
|
`\2` repeats (\s)
|
||
|
|
||
|
## Hint 3:
|
||
|
The code below:
|
||
|
```javascript
|
||
|
let testString = "test test test test test test";
|
||
|
let reRegex =/(test)(\s)\1\2\1/g;
|
||
|
let result = reRegex.test(testString);
|
||
|
```
|
||
|
because we used `\g`, our Regex doesn't return after first full match (`test test test`) and matched all repetitions.
|
||
|
|
||
|
## Spoiler Alert - Solution Ahead!
|
||
|
|
||
|
## Solution:
|
||
|
|
||
|
```javascript
|
||
|
let repeatNum = "42 42 42";
|
||
|
let reRegex = /^(\d+)\s\1\s\1$/;
|
||
|
let result = reRegex.test(repeatNum);
|
||
|
```
|