Niet-vangende haakjes in JavaScript regex

Haakjes ( ) vervullen twee functies - het groeperen van karakters en de functie van een vanggroep (capturing group). Maar wat te doen als we moeten groeperen, maar niet in een vanggroep willen plaatsen? Voor dit probleem zijn speciale niet-vangende haakjes (?: ) bedacht - ze groeperen, maar plaatsen niet in een vanggroep.

Voorbeeld

In het volgende voorbeeld zijn de eerste haakjes nodig voor groepering, en de tweede - voor een vanggroep. Echter, beide soorten haakjes slaan gegevens op in een vanggroep:

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

Het resultaat in onze vanggroepen zal als volgt zijn:

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

Voorbeeld

Laten we ervoor zorgen dat het eerste paar haakjes alleen groepeert, maar niet in een vanggroep plaatst:

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

Het resultaat is dat ons nummer in de eerste vanggroep staat:

javascriptconsole.log(res[1]); // geeft '123' weer