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:

javascript'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 !:

javascript'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':

javascript'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:

javascript'aab'.replace(/a/,  '!'); // tagastab '!ab'

Ja nüüd leiab regulaaravaldis kõik vastestused:

javascript'aab'.replace(/a/g, '!'); // tagastab '!!b'
Задание 1

Antud on string:

javascriptlet 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'.

Задание 2

Antud on string:

javascriptlet 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'.

Задание 3

Antud on string:

javascriptlet str = 'aba aca aea abba adca abea';

Kirjutage regulaaravaldis, mis leiab stringid 'abba' ja 'abea', ilma et 'adca' kaasa võetaks.