Nesaglabājošās iekavas JavaScript regulārajās izteiksmēs

Iekavas ( ) veic divas funkcijas - simbolu grupēšanu un capture grupas funkciju. Bet ko darīt, ja mums ir nepieciešams grupēt, bet neievietot capture grupā? Šīs problēmas risināšanai tika izgudrotas speciālas nesaglabājošās iekavas (?: ) - tās grupē, bet neievieto capture grupā.

Piemērs

Nākamajā piemērā pirmās iekavas mums ir vajadzīgas grupēšanai, bet otrajās - capture grupai. Tomēr abas iekavas saglabā datus capture grupā:

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

Rezultātā mūsu capture grupās būs sekojošais:

javascriptconsole.log(res[0]); // izvadīs 'abab123'
console.log(res[1]); // izvadīs 'ab'
console.log(res[2]); // izvadīs '123'

Piemērs

Padarīsim tā, lai pirmā iekavu pāris tikai grupētu, bet neievietotu capture grupā:

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

Rezultātā pirmajā capture grupā būs mūsu skaitlis:

javascriptconsole.log(res[1]); // izvadīs '123'