JavaScript регексларида сақланмайдиган қавслар

Қавслар ( ) икки функцияни бажаради - белгиларни гуруҳлаш ва карман функцияси. А нема қилиш керак, агар биз гуруҳлашни хохласак, лекин карманга сақламасак? Бундай муаммони ҳал қилиш учун махсус сақланмайдиган қавслар (?: ) ишлаб чиқилган - улар гуруҳлайди, лекин карманга сақламайди.

Мисол

Кейинги мисолда биринчи қавслар бизга гуруҳлаш учун керак, иккинчилари эса карман учун. Аммо, ҳамма қавслар маълумотларни карманга сақлайди:

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

Натижада бизнинг карманларимизда кейингилар бўлади:

javascriptconsole.log(res[0]); // чиқади 'abab123'
console.log(res[1]); // чиқади 'ab'
console.log(res[2]); // чиқади '123'

Мисол

Биринчи қавслар фақат гуруҳлаш учунгина хизмат қилиши, лекин карманга сақламаслигини таъминлаймиз:

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

Натижада биринчи карманда бизнинг рақамимиз бўлади:

javascriptconsole.log(res[1]); // чиқади '123'