JavaScript-dä regular ifadäniň içindäki kartlar
Kartlaryň mazmuny diňe çalşyrylan setirde däl, eýsem regular ifadäniň özünde hem elýeterlidir: biz bir zat bir karta goýup bilýäris, soňra bolsa derrew regular ifadäde bu ýerde şol kartdaky mazmunyň durmalydygyny aýdyp bileris.
Kartlaryň mazmuny olaryň ters sles bilen ýazylyp duran belgileri boýunça elýeterlidir. Mysal üçin,
biriniň karta şeýle elýeter bolary: \1,
ikkinji karta şeýle - \2, üçünji
- \3 we ş.m.
Ýokarda ýazylanlaryň ählisi size heniz gaty düşnüksiz bolup görünýändigine ynanýaryn. Bu bolsa tüýs, sebäbi kartlar - regular ifadeleriň iň düşnüksiz ýeridir. Geliň mysallar bilen düşünýäli.
Mysal
Bizde şeýle bir setir bardyr diýeliň:
let str = 'aa bb cd ef';
Onda ähli şol ýerleri, ýagny bir hataryň yzygider iki gezek gaýtalanylan ýerlerini tapalyň. Mesele çözmek üçin islendik haraplary gözläp, ony bir karta goýup, soňra bolsa şol kartdaky mazmunyň indiki nyşanyň peýdasyna gelýändigini barlarys:
let res = str.replace(/([a-z])\1/g, '!');
Netijede üýtgeýjide aşakdaky ýazylar:
'! ! cd ef'
Mysal
Bizde şeýle bir setir bardyr diýeliň:
let str = 'asxca buzxb csgd';
Onda ähli şol sözleri, ýagny birinji we soňky harplaryň deň bolan sözlerini tapalyň. Mesele çözmek üçin şeýle bir şablon ýazarys: harpy, soň ýene bir ýa-da köpräk harp, soňra bolsa birinji harp ýaly bir harp:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Netijede üýtgeýjide aşakdaky ýazylar:
'! ! csgd'
Amaly meseläler
Setir berlen:
let str = 'aaa bbb ccc xyz';
Üç sany deň harpyň yzygider gaýtalanylan ähli setir böleklerini tapyň.
Setir berlen:
let str = 'a aa aaa aaaa aaaaa';
Iki ýa-da köpräk deň harpyň yzygider gaýtalanylan ähli setir böleklerini tapyň.
Setir berlen:
let str = 'aaa aaa bbb bbb ccc ddd';
Iki sany deň söziň yzygider gaýtalanylan ähli setir böleklerini tapyň.