⊗jsSpRENPB 132 of 294 menu

Parênteses não capturadores em expressões regulares JavaScript

Os parênteses ( ) desempenham duas funções - agrupamento de caracteres e a função de captura. E o que fazer se precisamos agrupar, mas não capturar? Para resolver esse problema, foram criados parênteses não capturadores (?: ) - eles agrupam, mas não capturam.

Exemplo

No exemplo a seguir, os primeiros parênteses são necessários para agrupamento, e os segundos - para captura. No entanto, ambos os tipos de parênteses salvam dados na captura:

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

Como resultado, nossas capturas conterão o seguinte:

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

Exemplo

Vamos fazer com que o primeiro par de parênteses apenas agrupe, mas não capture:

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

Como resultado, nossa primeira captura será o número:

console.log(res[1]); // exibirá '123'
roiddeitpl