Neszakupljajuće zagrade u regularnim izrazima JavaScript
Zagrade ( ) obavljaju dve funkcije -
grupisanje simbola i funkciju džepa. A
šta da radimo ako nam je potrebno da grupišemo,
ali da ne stavljamo u džep?
Za rešavanje ovakvog problema osmišljene su specijalne
neszakupljajuće zagrade (?: )
- one grupišu, ali ne stavljaju u džep.
Primer
U sledećem primeru prve zagrade su nam potrebne za grupisanje, a druge - za džep. Međutim, i jedne i druge zagrade čuvaju podatke u džep:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Kao rezultat, u našim džepovima će biti sledeće:
console.log(res[0]); // ispisaće 'abab123'
console.log(res[1]); // ispisaće 'ab'
console.log(res[2]); // ispisaće '123'
Primer
Učinimo da prvi par zagrada samo grupise, ali ne stavlja u džep:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Kao rezultat, u prvom džepu će biti naš broj:
console.log(res[1]); // ispisaće '123'