Nezajemajoči oklepaji v regularnih izrazih JavaScript

Oklepaji ( ) izvajajo dve funkciji - združevanje simbolov in funkcijo zajema (capture). Kaj pa narediti, če želimo združevati, a ne zajeti v skupino? Za rešitev te težave so bili izumljeni posebni nezajemajoči oklepaji (?: ) - ti združujejo, vendar ne zajamejo v skupino.

Primer

V naslednjem primeru so prvi oklepaji potrebni za združevanje, drugi pa za zajem. Vendar, obe vrsti oklepajev shranijo podatke v zajemne skupine:

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

Kot rezultat bo v naših zajemnih skupinah naslednje:

javascriptconsole.log(res[0]); // izpiše 'abab123'
console.log(res[1]); // izpiše 'ab'
console.log(res[2]); // izpiše '123'

Primer

Naredimo tako, da bo prvi par oklepajev le združeval, ne pa tudi zajemal v skupino:

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

Kot rezultat bo v prvi zajemni skupini naše število:

javascriptconsole.log(res[1]); // izpiše '123'