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:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Kot rezultat bo v naših zajemnih skupinah naslednje:
console.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:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Kot rezultat bo v prvi zajemni skupini naše število:
console.log(res[1]); // izpiše '123'