Regulaaravaldiste sissejuhatus JavaScriptis
Regulaaravaldised on käsid keerukaks otsimiseks ja asendamiseks (või lihtsalt otsimiseks). Need võimaldavad teha väga huvitavaid asju, kuid kahjuks on nende omandamine üsna keeruline.
JavaScriptis on mitu meetodit
regulaaravaldistega töötamiseks. Hakkame nendega
tutvema näite abil replace
- te juba tunnete seda meetodit: see võtab esimese
parameetrina mida asendada ja teise
- millega asendada. Ja meetodit rakendatakse
reeglile, milles asendamine toimub:
'bab'.replace('a', '!'); // tagastab 'b!b'
Selle meetodi esimese parameetrina saab edastada
mitte ainult stringi, vaid regulaaravaldise.
Regulaaravaldis on kogum
käske, mis asuvad kaldkriipsude vahel /. Neid
kaldkriipsu nimetatakse piiritlejateks regulaaravaldiste puhul.
Regulaaravaldised ise koosnevad kahest tüüpi sümbolitest: nendest, mis tähistavad iseennast ja käsusümbolitest, mida nimetatakse spetsiaalseteks sümboliteks.
Tähed ja numbrid tähistavad iseennast. Järgmises
näites asendame regulaaravaldise abil
tähe 'a' sümboliga !:
'bab'.replace(/a/, '!'); // tagastab 'b!b'
Kuid punkt on spetsiaalne sümbol
ja tähistab suvalist sümbolit. Järgmises
näites leiame stringi järgmise mustri järgi:
täht 'x', siis suvaline sümbol, siis
jälle täht 'x':
'xax eee'.replace(/x.x/, '!'); // tagastab '! eee'
Pärast piiritlejaid saab kirjutada modifikaatoreid
- käske, mis muudavad regulaaravaldise üldisi
omadusi. Näiteks modifikaator
g lülitab sisse globaalse otsimise
ja asendamise režiimi - ilma selleta leiab regulaaravaldis ainult
esimese vastestuse, kuid sellega - kõik vastestused.
Järgmises näites pole määratud modifikaatorit
g ja regulaaravaldis leiab ainult esimese
vastestuse:
'aab'.replace(/a/, '!'); // tagastab '!ab'
Ja nüüd leiab regulaaravaldis kõik vastestused:
'aab'.replace(/a/g, '!'); // tagastab '!!b'
Antud on string:
let str = 'ahb acb aeb aeeb adcb axeb';
Kirjutage regulaaravaldis, mis leiab stringid
'ahb', 'acb', 'aeb'
vastavalt mustrile: täht 'a', suvaline sümbol,
täht 'b'.
Antud on string:
let str = 'aba aca aea abba adca abea';
Kirjutage regulaaravaldis, mis leiab stringid
'abba', 'adca', 'abea'
vastavalt mustrile: täht 'a', 2
suvalist sümbolit, täht 'a'.
Antud on string:
let str = 'aba aca aea abba adca abea';
Kirjutage regulaaravaldis, mis leiab stringid
'abba' ja 'abea', ilma et
'adca' kaasa võetaks.