Uvod v regularne izraze v JavaScript
Regularni izrazi so ukazi za zapleteno iskanje in zamenjavo (ali preprosto iskanje). Omogočajo zelo zanimive stvari, vendar so na žalost precej težki za obvladovanje.
Obstaja več metod JavaScript za
delo z regularnimi izrazi. Seznanili se bomo
z njimi na primeru replace
- to metodo že poznate: kot prvi parameter sprejme kaj zamenjati, drugi parameter pa
- s čim zamenjati. Sama metoda se uporablja
za niz, v katerem se izvaja zamenjava:
'bab'.replace('a', '!'); // vrne 'b!b'
Kot prvi parameter te metode je mogoče podati
ne le niz, temveč regularni izraz.
Regularni izraz predstavlja niz
ukazov, nameščenih med poševnicami /. Te
poševnice imenujemo omejevalniki regularnih
izrazov.
Sami regularni izrazi so sestavljeni iz dveh vrst simbolov: iz tistih, ki označujejo same sebe in iz simbolov-ukazov, ki jih imenujemo posebni simboli.
Črke in številke označujejo same sebe. V naslednjem
primeru bomo z regularnim izrazom
zamenjali črko 'a' z !:
'bab'.replace(/a/, '!'); // vrne 'b!b'
Pika pa je poseben simbol
in označuje poljuben simbol. V naslednjem
primeru bomo našli niz po takšnem vzorcu:
črka 'x', nato poljuben simbol, nato
spet črka 'x':
'xax eee'.replace(/x.x/, '!'); // vrne '! eee'
Za omejevalniki lahko pišemo modifikatorje
- ukaze, ki spreminjajo splošne lastnosti
regularnega izraza. Na primer, modifikator
g vklopi način globalnega iskanja
in zamenjave - brez njega regularni izraz išče le
prvo ujemanje, z njim pa - vsa ujemanja.
V naslednjem primeru ni naveden modifikator
g in regularni izraz bo našel le prvo
ujemanje:
'aab'.replace(/a/, '!'); // vrne '!ab'
Zdaj pa bo regularni izraz našel vsa ujemanja:
'aab'.replace(/a/g, '!'); // vrne '!!b'
Podan je niz:
let str = 'ahb acb aeb aeeb adcb axeb';
Napišite regularni izraz, ki bo našel nize
'ahb', 'acb', 'aeb'
po vzorcu: črka 'a', poljuben simbol,
črka 'b'.
Podan je niz:
let str = 'aba aca aea abba adca abea';
Napišite regularni izraz, ki bo našel nize
'abba', 'adca', 'abea'
po vzorcu: črka 'a', 2
poljubna simbola, črka 'a'.
Podan je niz:
let str = 'aba aca aea abba adca abea';
Napišite regularni izraz, ki bo našel nize
'abba' in 'abea', ne da bi zajel
'adca'.