⊗jsSpRENPB 132 of 294 menu

Paréntesis no capturadores en expresiones regulares de JavaScript

Los paréntesis ( ) realizan dos funciones - agrupar caracteres y la función de grupo de captura. ¿Y qué hacemos si necesitamos agrupar, pero no queremos capturar? Para resolver este problema se crearon los paréntesis no capturadores (?: ) - agrupan, pero no capturan en un grupo.

Ejemplo

En el siguiente ejemplo, los primeros paréntesis los necesitamos para agrupar, y los segundos - para capturar. Sin embargo, ambos tipos de paréntesis guardan datos en un grupo de captura:

let str = 'abab123'; let res = str.match(/(ab)+([1-9]+)/);

Como resultado, en nuestros grupos de captura tendremos lo siguiente:

console.log(res[0]); // mostrará 'abab123' console.log(res[1]); // mostrará 'ab' console.log(res[2]); // mostrará '123'

Ejemplo

Hagamos que el primer par de paréntesis solo agrupe, pero no capture en un grupo:

let str = 'abab123'; let res = str.match(/(?:ab)+([1-9]+)/);

Como resultado, en el primer grupo de captura estará nuestro número:

console.log(res[1]); // mostrará '123'
kauzcfrrusv