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:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Di conseguenza, nei nostri gruppi di cattura avremo quanto segue:
console.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:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Di conseguenza, nel primo gruppo di cattura ci sarà il nostro numero:
console.log(res[1]); // visualizzerà '123'