Незахавальныя дужкі ў рэгулярках 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'