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ā:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Rezultātā mūsu capture grupās būs sekojošais:
console.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ā:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Rezultātā pirmajā capture grupā būs mūsu skaitlis:
console.log(res[1]); // izvadīs '123'