Kllapat që nuk ruajnë në regex JavaScript

Kllapat ( ) kryejnë dy funksione - grupimin e karaktereve dhe funksionin e xhepit. Por çfarë duhet bërë nëse ne kemi nevojë të grupojmë, por të mos vendosim në xhep? Për zgjidhjen e një problemi të tillë janë krijuar kllapat që nuk ruajnë (?: ) - ato grupojnë, por nuk vendosin në xhep.

Shembull

Në shembullin vijues, kllapat e para na duhen për grupim, ndërsa të dytat - për xhep. Megjithatë, të dy llojet e kllapave ruajnë të dhëna në xhep:

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

Si rezultat, në xhepat tanë do të kemi sa vijon:

javascriptconsole.log(res[0]); // do të shfaqë 'abab123'
console.log(res[1]); // do të shfaqë 'ab'
console.log(res[2]); // do të shfaqë '123'

Shembull

Le t'i bëjmë që çifti i parë i kllapave të grupojë vetëm, por të mos vendosë në xhep:

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

Si rezultat, në xhepin e parë do të jetë numri ynë:

javascriptconsole.log(res[1]); // do të shfaqë '123'