Кішэні ў самой рэгулярцы ў JavaScript
Змесціва кішэняў даступнае не толькі ў радку замены, але ў і самой рэгулярцы: мы можам пакласці што-небудзь у кішэнь, а затым прама ў рэгулярцы сказаць, што тут павінна стаяць змесціва гэтага кішэня.
Змесціва кішэняў даступнае па іх нумарах,
перад якімі стаіць адваротны слэш. Напрыклад,
першы кішэнь будзе даступны вось так: \1,
другі кішэнь вось так - \2, трэці
- \3 і гэтак далей.
Упэўнены, што ўсё напісанае вышэй пакуль вельмі туманна для вас. Гэта не дзіўна, так як кішэні — самае незразумелае месца рэгулярак. Давайце будзем разбірацца на прыкладах.
Прыклад
Хай у нас ёсць вось такая радка:
let str = 'aa bb cd ef';
Давайце знойдзем у ёй усе месцы, у якіх стояць дзве любыя аднолькавыя літары запар. Для вырашэння задачы будзем шукаць любую літару, кладзём яе ў кішэнь, а затым правяраць, ці ідзе наступным сімвалам змесціва гэтага кішэня:
let res = str.replace(/([a-z])\1/g, '!');
У выніку ў зменную запiшацца наступнае:
'! ! cd ef'
Прыклад
Хай у нас ёсць вось такая радка:
let str = 'asxca buzxb csgd';
Давайце знойдзем у ёй усе словы, у якіх аднолькавыя першая і апошняя літары. Для вырашэння задачы напішам наступны шаблон: літара, затым яшчэ адна ці болей літар, а затым такая жа літара як першая:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
У выніку ў зменную запiшацца наступнае:
'! ! csgd'
Практычныя задачы
Дана радка:
let str = 'aaa bbb ccc xyz';
Знайдзіце ўсе падрадкі, у якіх ёсць тры аднолькавыя літары запар.
Дана радка:
let str = 'a aa aaa aaaa aaaaa';
Знайдзіце ўсе падрадкі, у якіх ёсць дзве ці болей аднолькавыя літары запар.
Дана радка:
let str = 'aaa aaa bbb bbb ccc ddd';
Знайдзіце ўсе падрадкі, у якіх ёсць два аднолькавыя словы запар.