Modifikatori u regularnim izrazima
Modifikatori su posebni znakovi koji definišu ponašanje regularnog izraza.
i | prilikom uparivanja poistovećuje velika i mala slova |
g | pronalazi sva poklapanja zadatog šablona |
m | uparivanje se vrši u tekstu sa više linija |
Kada u JavaScriptu navodimo regularni izraz kao literal, modifikatori se navode odmah posle zatvarajuće kose crte. Navode se samo oni koje želimo da primenimo, jedan za drugim, bez razmaka i bez određenog redosleda.
/šablon/modifikatori
Ako kreiramo regularni izraz ppreko konstruktora, modifikatore zadajemo kao drugi parametar, u obliku stringa
new RagExp(šablon, modifikatori)
Regularni izrazi kreiraju veoma precizne šablone, kod kojih se velika i mala slova razlikuju. To znači da su stringovi "Pera", "pera" i "PERA" svi različiti. Modifikator i u stvari kaže da se velika i mala slova poistovete, tako da bi po tome ova tri natpisa bili jednaki.
U stringu je moguće da se pojavi više poklapanja sa šablonom. U normalnim situacijama pronalazi se samo prvo poklapanje. Međutim, ako se zada modifikator g, biće "otkrivena" sva poklapanja.
Primer za modifikatore
Poistovećivanje velikih i malih slova
Kada se zada modifikator i velika i mala slova ne moraju tačno da se poklope.
- Bez i: "A" nije isto što i "a"
- Sa i: "A" je isto što i "a"
var t = "Ana je znala da je Aca namazao dva parčeta hleba.";
var r1 = /a.a/;
var r2 = /a.a/i;
Poklapanja sa navedenim šablonima:
- "Ana je znala da je Aca namazao dva parčeta hleba.".
- "Ana je znala da je Aca namazao dva parčeta hleba.".
Pronalaženje svih poklapanja
Kada se zada modifikator g pronaći će sva poklapanja sa šablonom.
- Bez g: samo prvo poklapanje
- Sa g: sva poklapanja
var t = "Ana je znala da je Aca namazao dva parčeta hleba.";
var r1 = /a.a/g;
var r2 = /a.a/gi;
Poklapanja sa navedenim šablonima:
- "Ana je znala da je Aca namazao dva parčeta hleba.".
- "Ana je znala da je Aca namazao dva parčeta hleba.".
Modifikator m ima smisla kada koristimo graničnike za početak i kraj stringa. Ako se ovaj modifikator zada, onda će se graničnici odnositi ne samo na realan početak i kraj stringa, već i na svaki novi red unutar stringa.
Primer za multiline modifikator
Kada se zada modifikator m svaki novi red se računa kao kraj, odnosno početak stringa.
// string sada sadrži nove redove (\n)
var t = "Ana je znala da je \nAca namazao \ndva parčeta hleba.";
var r1 = /^A.a/g; // na početku stringa ide slovo "A", pa bilo koji znak, pa slovo "a"
var r2 = /^A.a/gm; // na početku linije ide slovo "A", pa bilo koji znak, pa slovo "a"
Poklapanja sa navedenim šablonima:
- "Ana je znala da je
Aca namazao
dva parčeta hleba.". - "Ana je znala da je
Aca namazao
dva parčeta hleba.".
U prvom primeru, pokušavamo da pronađemo sve pojave šablona, ali "priznaje" se samo realan početak stringa. U drugom primeru, zahvaljujući modifikatoru m, graničnik ^ označava svaki početak linije