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:
let 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:
let res = str.replace(/([a-z])\1/g, '!');
Si rezultat, në variabël do të shkruhet kjo:
'! ! cd ef'
Shembull
Le të kemi këtë varg:
let 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:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Si rezultat, në variabël do të shkruhet kjo:
'! ! csgd'
Detyra praktike
Është dhënë vargu:
let str = 'aaa bbb ccc xyz';
Gjeni të gjitha nënvargjet, në të cilat ka tre shkronja të njëjta njëra pas tjetrës.
Është dhënë vargu:
let 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.
Është dhënë vargu:
let 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.