2021-02-06 04:42:36 +00:00
---
id: 587d7dbb367417b2b2512baa
2021-03-31 00:44:56 +09:00
title: Reutiliza patrones usando grupos de captura
2021-02-06 04:42:36 +00:00
challengeType: 1
forumTopicId: 301364
dashedName: reuse-patterns-using-capture-groups
---
# --description--
2021-07-26 03:17:00 +09:00
Digamos que quieres hacer coincidir una palabra que aparece varias veces como la siguiente.
2021-02-06 04:42:36 +00:00
2021-07-26 03:17:00 +09:00
```js
let repeatStr = "row row row your boat";
```
Podrías usar `/row row row/` , pero ¿qué pasa si no conoces la palabra específica que se repite? < dfn > Los grupos de captura</ dfn > pueden utilizarse para encontrar subcadenas repetidas.
Los grupos de captura se construyen encerrando entre paréntesis el patrón de expresión regular a capturar. En este caso, el objetivo es capturar una palabra formada por caracteres alfanuméricos, por lo que el grupo de captura será `\w+` encerrado entre paréntesis: `/(\w+)/` .
2021-02-06 04:42:36 +00:00
2021-07-26 03:17:00 +09:00
La subcadena que coincide con el grupo se guarda en una "variable" temporal, a la que se puede acceder dentro de la misma expresión regular utilizando una barra invertida y el número del grupo de captura (por ejemplo, `\1` ). Los grupos de captura se numeran automáticamente por la posición de sus paréntesis de apertura (de izquierda a derecha), empezando por el 1.
2021-02-06 04:42:36 +00:00
2021-07-26 03:17:00 +09:00
El siguiente ejemplo encuentra cualquier palabra que aparezca tres veces separada por un espacio:
2021-02-06 04:42:36 +00:00
```js
2021-07-26 03:17:00 +09:00
let repeatRegex = /(\w+) \1 \1/;
repeatRegex.test(repeatStr); // Returns true
repeatStr.match(repeatRegex); // Returns ["row row row", "row"]
2021-02-06 04:42:36 +00:00
```
2021-07-26 03:17:00 +09:00
El uso del método `.match()` en una cadena devolverá un arreglo con la subcadena coincidente, junto con sus grupos capturados.
2021-03-31 00:44:56 +09:00
2021-02-06 04:42:36 +00:00
# --instructions--
2021-03-31 00:44:56 +09:00
Utiliza los grupos de captura en `reRegex` para que coincida con una cadena que conste sólo del mismo número repetido exactamente tres veces separado por espacios.
2021-02-06 04:42:36 +00:00
# --hints--
2021-03-31 00:44:56 +09:00
Tu expresión regular debe utilizar la clase de caracteres abreviada para los dígitos.
2021-02-06 04:42:36 +00:00
```js
assert(reRegex.source.match(/\\d/));
```
2021-03-31 00:44:56 +09:00
Tu expresión regular debe reutilizar un grupo de captura dos veces.
2021-02-06 04:42:36 +00:00
```js
assert(reRegex.source.match(/\\1|\\2/g).length >= 2);
```
2021-03-31 00:44:56 +09:00
Tu expresión regular debe coincidir con la cadena `42 42 42` .
2021-02-06 04:42:36 +00:00
```js
2021-10-06 08:36:48 -07:00
reRegex.lastIndex = 0;
2021-02-06 04:42:36 +00:00
assert(reRegex.test('42 42 42'));
```
2021-03-31 00:44:56 +09:00
Tu expresión regular debe coincidir con la cadena `100 100 100` .
2021-02-06 04:42:36 +00:00
```js
2021-10-06 08:36:48 -07:00
reRegex.lastIndex = 0;
2021-02-06 04:42:36 +00:00
assert(reRegex.test('100 100 100'));
```
2021-03-31 00:44:56 +09:00
Tu expresión regular no debe coincidir con la cadena `42 42 42 42` .
2021-02-06 04:42:36 +00:00
```js
assert.equal('42 42 42 42'.match(reRegex.source), null);
```
2021-03-31 00:44:56 +09:00
Tu expresión regular no debe coincidir con la cadena `42 42` .
2021-02-06 04:42:36 +00:00
```js
assert.equal('42 42'.match(reRegex.source), null);
```
2021-03-31 00:44:56 +09:00
Tu expresión regular no debe coincidir con la cadena `101 102 103` .
2021-02-06 04:42:36 +00:00
```js
2021-10-06 08:36:48 -07:00
reRegex.lastIndex = 0;
2021-02-06 04:42:36 +00:00
assert(!reRegex.test('101 102 103'));
```
2021-03-31 00:44:56 +09:00
Tu expresión regular no debe coincidir con la cadena `1 2 3` .
2021-02-06 04:42:36 +00:00
```js
2021-10-06 08:36:48 -07:00
reRegex.lastIndex = 0;
2021-02-06 04:42:36 +00:00
assert(!reRegex.test('1 2 3'));
```
2021-03-31 00:44:56 +09:00
Tu expresión regular debe coincidir con la cadena `10 10 10` .
2021-02-06 04:42:36 +00:00
```js
2021-10-06 08:36:48 -07:00
reRegex.lastIndex = 0;
2021-02-06 04:42:36 +00:00
assert(reRegex.test('10 10 10'));
```
# --seed--
## --seed-contents--
```js
let repeatNum = "42 42 42";
let reRegex = /change/; // Change this line
let result = reRegex.test(repeatNum);
```
# --solutions--
```js
let repeatNum = "42 42 42";
let reRegex = /^(\d+)\s\1\s\1$/;
let result = reRegex.test(repeatNum);
```