Iekavu grupas JavaScript regulārajās izteiksmēs
Iekavu grupu saturs ir pieejams ne tikai aizstāšanas virknē, bet arī pašā regulārajā izteiksmē: mēs varam ievietot kaut ko iekavu grupā un pēc tam tieši regulārajā izteiksmē norādīt, ka šeit jāatrodas šīs iekavu grupas saturam.
Piekļūt iekavu grupu saturam var pēc to numuriem,
pirms kuriem ir apgriezts slīpsvītras simbols. Piemēram,
pirmajai iekavu grupai varēs piekļūt šādi: \1,
otrajai iekavu grupai šādi - \2, trešajai
- \3 un tā tālāk.
Esmu pārliecināts, ka viss iepriekš rakstītais pagaidām ir diezgan neskaidrs jums. Tas nav pārsteidzoši, jo iekavu grupas ir vismazāk saprotamākā vieta regulārajās izteiksmēs. Sapratīsim to ar piemēru palīdzību.
Piemērs
Pieņemsim, ka mums ir šāda virkne:
let str = 'aa bb cd ef';
Atradīsim tajā visas vietas, kurās atrodas divi vienādi burti pēc kārtas. Lai atrisinātu uzdevumu, meklēsim jebkuru burtu, ievietosim to iekavu grupā un pēc tam pārbaudīsim, vai nākamais simbols ir šīs iekavu grupas saturs:
let res = str.replace(/([a-z])\1/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! cd ef'
Piemērs
Pieņemsim, ka mums ir šāda virkne:
let str = 'asxca buzxb csgd';
Atradīsim tajā visus vārdus, kuros pirmais un pēdējais burts ir vienādi. Lai atrisinātu uzdevumu, uzrakstīsim šādu veidni: burts, pēc tam vēl viens vai vairāki burti un pēc tam tāds pats burts kā pirmais:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! csgd'
Praktiskie uzdevumi
Dota virkne:
let str = 'aaa bbb ccc xyz';
Atrodiet visas apakšvirknes, kurās ir trīs vienādi burti pēc kārtas.
Dota virkne:
let str = 'a aa aaa aaaa aaaaa';
Atrodiet visas apakšvirknes, kurās ir divi vai vairāki vienādi burti pēc kārtas.
Dota virkne:
let str = 'aaa aaa bbb bbb ccc ddd';
Atrodiet visas apakšvirknes, kurās ir divi vienādi vārdi pēc kārtas.