Nesaugantys skliaustai JavaScript reguliariosiose išraiškose

Skliaustai ( ) atlieka dvi funkcijas - symbolių grupavimą ir kabliuko funkciją. O ką daryti, jei mums reikia sugrupuoti, bet į kabliuką nedėti? Šiai problemai spręsti buvo sukurti specialūs nesaugantys skliaustai (?: ) - jie grupuoja, bet nededa į kabliuką.

Pavyzdys

Šiame pavyzdyje pirmieji skliaustai mums reikalingi grupavimui, o antrieji - kabliukui. Tačiau ir vieni, ir kiti skliaustai išsaugo duomenis į kabliuką:

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

Rezultate mūsų kabliukuose bus taip:

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

Pavyzdys

Padarykime taip, kad pirmoji skliaustų pora tik grupuotų, bet nedėtų į kabliuką:

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

Rezultate pirmame kabliuke bus mūsų skaičius:

javascriptconsole.log(res[1]); // išves '123'