⊗jsSpREEP 129 of 294 menu

Grupos de captura en la propia expresión regular en JavaScript

El contenido de los grupos de captura está disponible no solo en la cadena de reemplazo, sino también en la propia expresión regular: nosotros podemos colocar algo en un grupo de captura, y luego directamente en la expresión regular decir, que aquí debe estar el contenido de ese grupo de captura.

El contenido de los grupos de captura está disponible por sus números, precedidos por una barra invertida. Por ejemplo, el primer grupo de captura estará disponible así: \1, el segundo grupo de captura así - \2, el tercero - \3 y así sucesivamente.

Estoy seguro de que todo lo escrito arriba es aún bastante confuso para ti. Esto no es sorprendente, ya que los grupos de captura son el lugar menos comprendido de las expresiones regulares. Vamos a entenderlo con ejemplos.

Ejemplo

Supongamos que tenemos la siguiente cadena:

let str = 'aa bb cd ef';

Vamos a encontrar en ella todos los lugares donde hay dos letras iguales cualesquiera seguidas. Para resolver el problema buscaremos cualquier letra, la colocaremos en un grupo de captura, y luego verificaremos si el siguiente símbolo es el contenido de ese grupo de captura:

let res = str.replace(/([a-z])\1/g, '!');

Como resultado, en la variable se guardará lo siguiente:

'! ! cd ef'

Ejemplo

Supongamos que tenemos la siguiente cadena:

let str = 'asxca buzxb csgd';

Encontremos en ella todas las palabras en las que la primera y la última letra son iguales. Para resolver el problema escribiremos el siguiente patrón: letra, luego una o más letras más, y luego la misma letra que la primera:

let res = str.replace(/([a-z])[a-z]+\1/g, '!');

Como resultado, en la variable se guardará lo siguiente:

'! ! csgd'

Problemas prácticos

Dada la cadena:

let str = 'aaa bbb ccc xyz';

Encuentra todas las subcadenas en las que hay tres letras iguales seguidas.

Dada la cadena:

let str = 'a aa aaa aaaa aaaaa';

Encuentra todas las subcadenas en las que hay dos o más letras iguales seguidas.

Dada la cadena:

let str = 'aaa aaa bbb bbb ccc ddd';

Encuentra todas las subcadenas en las que hay dos palabras iguales seguidas.

byidmsazfr