Introducere în expresiile regulate în JavaScript
Expresiile regulate sunt comenzi pentru căutări și înlocuiri complexe (sau pur și simplu căutări). Ele permit să faci lucruri foarte interesante, dar, din păcate, sunt destul de greu de învățat.
Există mai multe metode JavaScript pentru
lucrul cu expresii regulate. Vom începe
să ne familiarizăm cu ele folosind exemplul replace
- ești deja familiarizat cu această metodă: primul ei
parametru primește ce să înlocuiască, iar al doilea
- cu ce să înlocuiască. Iar metoda în sine este aplicată
șirului în care se face înlocuirea:
'bab'.replace('a', '!'); // returnează 'b!b'
Primului parametru al acestei metode i se poate transmite
nu doar un șir, ci o expresie regulată.
O expresie regulată reprezintă un set
de comenzi, plasate între slash-uri /. Aceste
slash-uri se numesc delimitatori ai expresiilor
regulate.
Expresiile regulate în sine sunt formate din două tipuri de simboluri: din cele care se notează pe ele însele și din simboluri-comandă, care se numesc simboluri speciale.
Literele și cifrele se notează pe ele însele. În următorul
exemplu vom înlocui folosind o expresie regulată
litera 'a' cu !:
'bab'.replace(/a/, '!'); // returnează 'b!b'
În schimb, punctul este un simbol special
și desemnează orice simbol. În următorul
exemplu vom găsi șirul după următorul model:
litera 'x', apoi orice simbol, apoi
din nou litera 'x':
'xax eee'.replace(/x.x/, '!'); // returnează '! eee'
După delimitatori se pot scrie modificatori
- comenzi care modifică proprietățile generale
ale expresiei regulate. De exemplu, modificatorul
g activează modul de căutare globală
și înlocuire - fără el, expresia regulată caută doar
primă potrivire, iar cu el - toate potrivirile.
În următorul exemplu nu este indicat modificatorul
g și expresia regulată va găsi doar prima
potrivire:
'aab'.replace(/a/, '!'); // returnează '!ab'
Iar acum expresia regulată va găsi toate potrivirile:
'aab'.replace(/a/g, '!'); // returnează '!!b'
Este dat șirul:
let str = 'ahb acb aeb aeeb adcb axeb';
Scrieți o expresie regulată care va găsi șirurile
'ahb', 'acb', 'aeb'
după modelul: litera 'a', orice simbol,
litera 'b'.
Este dat șirul:
let str = 'aba aca aea abba adca abea';
Scrieți o expresie regulată care va găsi șirurile
'abba', 'adca', 'abea'
după modelul: litera 'a', 2
orice simboluri, litera 'a'.
Este dat șirul:
let str = 'aba aca aea abba adca abea';
Scrieți o expresie regulată care va găsi șirurile
'abba' și 'abea', fără a captura
'adca'.