JavaScript регексларида сақланмайдиган қавслар
Қавслар ( ) икки функцияни бажаради -
белгиларни гуруҳлаш ва карман функцияси. А
нема қилиш керак, агар биз гуруҳлашни хохласак,
лекин карманга сақламасак?
Бундай муаммони ҳал қилиш учун махсус
сақланмайдиган қавслар (?: )
ишлаб чиқилган - улар гуруҳлайди, лекин карманга сақламайди.
Мисол
Кейинги мисолда биринчи қавслар бизга гуруҳлаш учун керак, иккинчилари эса карман учун. Аммо, ҳамма қавслар маълумотларни карманга сақлайди:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Натижада бизнинг карманларимизда кейингилар бўлади:
console.log(res[0]); // чиқади 'abab123'
console.log(res[1]); // чиқади 'ab'
console.log(res[2]); // чиқади '123'
Мисол
Биринчи қавслар фақат гуруҳлаш учунгина хизмат қилиши, лекин карманга сақламаслигини таъминлаймиз:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Натижада биринчи карманда бизнинг рақамимиз бўлади:
console.log(res[1]); // чиқади '123'