Parentesi non catturanti nelle espressioni regolari JavaScript

Le parentesi ( ) svolgono due funzioni - raggruppare i caratteri e la funzione di cattura. Ma cosa fare se abbiamo bisogno di raggruppare, senza però catturare nel gruppo? Per risolvere questo problema sono state create delle speciali parentesi non catturanti (?: ) - raggruppano, ma non catturano nel gruppo.

Esempio

Nell'esempio seguente, le prime parentesi ci servono per il raggruppamento, mentre le seconde - per la cattura. Tuttavia, entrambe le parentesi salvano i dati nel gruppo di cattura:

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

Di conseguenza, nei nostri gruppi di cattura avremo quanto segue:

javascriptconsole.log(res[0]); // visualizzerà 'abab123'
console.log(res[1]); // visualizzerà 'ab'
console.log(res[2]); // visualizzerà '123'

Esempio

Modifichiamo in modo che la prima coppia di parentesi solo raggruppi, senza catturare nel gruppo:

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

Di conseguenza, nel primo gruppo di cattura ci sarà il nostro numero:

javascriptconsole.log(res[1]); // visualizzerà '123'