Xhepat në vetë regex në JavaScript

Përmbajtja e xhepave është e disponueshme jo vetëm në vargun e zëvendësimit, por edhe në vetë regex: ne mund të vendosim diçka në xhep, dhe pastaj pikërisht në regex të themi, se këtu duhet të jetë përmbajtja e atij xhepi.

Përmbajtja e xhepave është e disponueshme sipas numrave të tyre, përpara të cilëve ka një backslash. Për shembull, xhepi i parë do të jetë i disponueshëm kështu: \1, xhepi i dytë kështu - \2, i treti - \3 e kështu me radhë.

Jam i sigurt se të gjitha sa më sipër janë ende mjaft të paqarta për ju. Kjo nuk është për t'u habitur, pasi xhepat janë vendi më i pakuptueshëm i regex. Le t'i kuptojmë me shembuj.

Shembull

Le të kemi këtë varg:

javascriptlet str = 'aa bb cd ef';

Le të gjejmë në të të gjitha vendet ku janë dy shkronja të njëjta njëra pas tjetrës. Për të zgjidhur problemin, do të kërkojmë çdo shkronjë, ta vendosim në xhep, dhe pastaj të kontrollojmë, nëse simboli tjetër është përmbajtja e atij xhepi:

javascriptlet res = str.replace(/([a-z])\1/g, '!');

Si rezultat, në variabël do të shkruhet kjo:

javascript'! ! cd ef'

Shembull

Le të kemi këtë varg:

javascriptlet str = 'asxca buzxb csgd';

Le të gjejmë në të të gjitha fjalët, në të cilat shkronja e parë dhe e fundit janë të njëjta. Për të zgjidhur problemin, do të shkruajmë këtë shabllon: shkronjë, pastaj një ose më shumë shkronja, dhe pastaj të njëjta shkronjë si e para:

javascriptlet res = str.replace(/([a-z])[a-z]+\1/g, '!');

Si rezultat, në variabël do të shkruhet kjo:

javascript'! ! csgd'

Detyra praktike

Задание 1

Është dhënë vargu:

javascriptlet str = 'aaa bbb ccc xyz';

Gjeni të gjitha nënvargjet, në të cilat ka tre shkronja të njëjta njëra pas tjetrës.

Задание 2

Është dhënë vargu:

javascriptlet str = 'a aa aaa aaaa aaaaa';

Gjeni të gjitha nënvargjet, në të cilat ka dy ose më shumë shkronja të njëjta njëra pas tjetrës.

Задание 3

Është dhënë vargu:

javascriptlet str = 'aaa aaa bbb bbb ccc ddd';

Gjeni të gjitha nënvargjet, në të cilat ka dy fjalë të njëjta njëra pas tjetrës.