⊗jsSpREEP 129 of 294 menu

Кішэні ў самой рэгулярцы ў 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';

Знайдзіце ўсе падрадкі, у якіх ёсць два аднолькавыя словы запар.

swsvesazru