Mifuko Katika Regular Expression yenyewe katika JavaScript
Yaliyomo kwenye mifuko yanapatikana sio tu kwenye kamba ya kubadilisha, lakini pia kwenye regular expression yenyewe: tunaweza kuweka kitu kwenye mfuko, kisha ndani ya regular expression yenyewe kusema kwamba hapa inapaswa kuwa na yaliyomo ya mfuko huo.
Yaliyomo kwenye mifuko yanapatikana kwa nambari zao,
ambazo zina backslash mbele. Kwa mfano,
mfuko wa kwanza utapatikana hivi: \1,
mfuko wa pili hivi - \2, mfuko wa tatu
- \3 na kadhalika.
Nina hakika kwamba yote yaliyoandikwa hapo juu bado yana utata kwako. Hii si ya kushangaza, kwani mifuko ndio sehemu inayoeleweka sana ya regular expressions. Wacha tuchambue kwa kutumia mifano.
Mfano
Wacha tuwe na kamba kama hii:
let str = 'aa bb cd ef';
Wacha tupate ndani yake maeneo yote ambayo kuna herufi mbili sawa zilizo kando kando. Ili kutatua tatizo tutatafuta herufi yoyote, kuweka kwenye mfuko, kisha kuangalia, ikiwa kinachofuata ni yaliyomo ya mfuko huo:
let res = str.replace(/([a-z])\1/g, '!');
Hatimaye kwenye kibadala kitaandikwa yafuatayo:
'! ! cd ef'
Mfano
Wacha tuwe na kamba kama hii:
let str = 'asxca buzxb csgd';
Wacha tupate ndani yake maneno yote ambayo herufi ya kwanza na ya mwisho ni sawa. Ili kutatua tatizo tutaandika muundo ufuatao: herufi, kisha herufi nyingine moja au zaidi, kisha herufi sawa na ya kwanza:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Hatimaye kwenye kibadala kitaandikwa yafuatayo:
'! ! csgd'
Matatizo ya Vitendo
Kamba imetolewa:
let str = 'aaa bbb ccc xyz';
Tafuta sehemu ndogo zote, ambazo kuna herufi tatu sawa zilizo kando kando.
Kamba imetolewa:
let str = 'a aa aaa aaaa aaaaa';
Tafuta sehemu ndogo zote, ambazo kuna herufi mbili au zaidi sawa zilizo kando kando.
Kamba imetolewa:
let str = 'aaa aaa bbb bbb ccc ddd';
Tafuta sehemu ndogo zote, ambazo kuna maneno mawili sawa yaliyo kando kando.