61 lines
1.5 KiB
Markdown
61 lines
1.5 KiB
Markdown
![]() |
---
|
||
|
title: Reuse Patterns Using Capture Groups
|
||
|
localeTitle: Reutilizar patrones usando grupos de captura
|
||
|
---
|
||
|
## Reutilizar patrones usando el grupo de captura
|
||
|
|
||
|
## Sugerencia 1:
|
||
|
|
||
|
Código dado abajo:
|
||
|
|
||
|
```javascript
|
||
|
let testString = "test test test ";
|
||
|
let reRegex =/(test)\s\1/;
|
||
|
let result = reRegex.test(testString);
|
||
|
```
|
||
|
|
||
|
`result` solo coincidirá con la `test test` porque `\1` en este ejemplo representa el mismo texto que el último grupo de captura `(test)` comparó más recientemente.
|
||
|
|
||
|
Si tuviéramos que traducir literalmente la expresión regular, se vería algo así:
|
||
|
|
||
|
```js
|
||
|
let re = /(test)\s\1;
|
||
|
let literalRe = /test\stest;
|
||
|
```
|
||
|
|
||
|
Tanto `rea` como `literalRe` coincidirían con la misma cosa.
|
||
|
|
||
|
## Sugerencia 2:
|
||
|
|
||
|
Dado el siguiente código:
|
||
|
|
||
|
```javascript
|
||
|
let testString = "test test test ";
|
||
|
let reRegex =/(test)(\s)\1\2\1/;
|
||
|
let result = reRegex.test(testString);
|
||
|
```
|
||
|
|
||
|
coincidirá con la `test test test` entera porque: `\1` repite (prueba) `\2` repeticiones (\\ s)
|
||
|
|
||
|
## Sugerencia 3:
|
||
|
|
||
|
El siguiente código:
|
||
|
|
||
|
```javascript
|
||
|
let testString = "test test test test test test";
|
||
|
let reRegex =/(test)(\s)\1\2\1/g;
|
||
|
let result = reRegex.test(testString);
|
||
|
```
|
||
|
|
||
|
debido a que usamos `\g` , nuestro Regex no regresa después de la primera coincidencia completa ( `test test test` ) y todas las repeticiones.
|
||
|
|
||
|
## Alerta de Spoiler - ¡Solución por delante!
|
||
|
|
||
|
## Solución:
|
||
|
|
||
|
```javascript
|
||
|
let repeatNum = "42 42 42";
|
||
|
let reRegex = /^(\d+)\s\1\s\1$/;
|
||
|
let result = reRegex.test(repeatNum);
|
||
|
|
||
|
```
|