Zsebek a reguláris kifejezésben JavaScriptben

A zsebek tartalma nem csak a helyettesítő karakterláncban érhető el, hanem magában a reguláris kifejezésben is: berakhatunk valamit egy zsebbe, majd egyből a reguláris kifejezésben megadhatjuk, hogy itt ennek a zsebnek a tartalmának kell állnia.

A zsebek tartalma a sorszámaik alapján érhető el, amelyek elé fordított perjel kerül. Például, az első zseb így érhető el: \1, a második zseb így - \2, a harmadik - \3 és így tovább.

Biztos vagyok benne, hogy minden fent írt még nagyon homályos számotokra. Ez nem meglepő, hiszen a zsebek a reguláris kifejezések legkevésbé érthető részei. Nézzünk példákat a megértés érdekében.

Példa

Tegyük fel, hogy van egy ilyen karakterláncunk:

javascriptlet str = 'aa bb cd ef';

Keressük meg benne az összes helyet, ahol bármelyik két egyforma betű áll egymás után. A feladat megoldásához keressünk bármelyik betűt, tegyük egy zsebbe, majd ellenőrizzük, hogy a következő karakter ezen zseb tartalma-e:

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

Ennek eredményeképpen a változóba a következő íródik:

javascript'! ! cd ef'

Példa

Tegyük fel, hogy van egy ilyen karakterláncunk:

javascriptlet str = 'asxca buzxb csgd';

Keressük meg benne az összes szót, amelyekben az első és az utolsó betű megegyezik. A feladat megoldásához írjuk meg a következő mintát: betű, majd még egy vagy több betű, és végül ugyanaz a betű, mint az első:

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

Ennek eredményeképpen a változóba a következő íródik:

javascript'! ! csgd'

Gyakorlati feladatok

Задание 1

Adott egy karakterlánc:

javascriptlet str = 'aaa bbb ccc xyz';

Keresse meg az összes részkarakterláncot, ahol három ugyanolyan betű áll egymás után.

Задание 2

Adott egy karakterlánc:

javascriptlet str = 'a aa aaa aaaa aaaaa';

Keresse meg az összes részkarakterláncot, ahol két vagy több ugyanolyan betű áll egymás után.

Задание 3

Adott egy karakterlánc:

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

Keresse meg az összes részkarakterláncot, ahol két ugyanolyan szó áll egymás után.