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:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Het resultaat in onze vanggroepen zal als volgt zijn:
console.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:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Het resultaat is dat ons nummer in de eerste vanggroep staat:
console.log(res[1]); // geeft '123' weer