Pronalaženje tekstualnih šablona u JavaScriptu

Videli smo da u JavaScript-u na relativno lak način možemo da pronalazimo podstringove unutar stringa. Međutim, priča se tu ne završava. String objekat nam nudi još naprednije metode za uparivanje stringova i to na osnovu šablona koje zadajemo kao regularne izraze. Ovi metodi su search() i match().

s.search(R) Prva pozicija substringa koji se uklapa u regularni izraz R.
s.match(R) Pronalazi jedan ili više pod-stringova za zadati regularni izraz R.

Metod search()

Metod search() se poziva za string objekat, sa zadatim parametrom koji može biti string ili šablon. Ako se zadati podstring (šablon) može pronaći unutar stringa, kao rezultat dobijamo poziciju prve pojave podstringa/šablona unutar stringa. Ako se ne može pronaći, rezultat je -1.

Ovaj metod suštinski funkcioniše kao i indexOf(), s tim što funkcioniše i za regularne izraze.

Objekat regularnog izraza takođe ima sličan metod - test().

str.search(regEx) str.search(subStr)
ParametarTipObavezanOpis
šablonregExp
string
DATekst ili šablon koji se traži unutar string objekta.
RezultatOpis
numerikRedni broj znaka od koga počinje prvi pronađeni podstring.
Ako nema podudaranja, rezultat je -1.

Metod match()

Metod match() se zadaje isto kao search(), s tim što je parametar uvek regularni izraz. Moguće je zadati i string, ali će on biti konvertovan u šablon.

Međutim tu prestaje svaka sličnost - metod match() je malo kompleksniji u odnosu na search(). Ako je šablon pronađen, kao rezultat vraća niz. U suprotnom vraća vrednost null.

Niz koji se vraća zavisi od modifikatora "g" u regularnom izrazu.

str.match(šablon)
ParametarTipObavezanOpis
šablonregExp
string
DATekst ili šablon koji se traži unutar string objekta.
RezultatOpis
nizNiz podstringova koji su se uklopili u zadati šablon.
nullAko nije pronađeno ni jedno podudaranje.

Ovaj metod se može uporediti sa metodom exec() objekta regularnog izraza.

Primeri za pronalaženje šablona

Pogledajmo prvo primere za metod search().


  var prom = "U bukvaru piše da mama ima Momu.";

  x = prom.indexOf("Mom");   // x = 27
  x = prom.search("Mom");    // x = 27
  
  x = prom.search(/m.m/i);    // x = 18
	

Vidimo da su metodi search() i indexOf() praktično isti kada se zada string. Međutim u drugom primeru vidimo da metod search() radi i sa regularnim izrazima.

Pogledajmo sada kako funkcioniše metod match().


  var prom = "U bukvaru piše da mama ima Momu.";

  x = prom.match(/m.m/gi);        // x = ["mam", "Mom"] (niz koji sadrži pronađene substringove)

  x = prom.match(/m.m/i);        // x = ["mam"] (niz od 1 elementa koji sadrži pronađen substring)
  // x.index = 18
  // x.input = "U bukvaru piše da mama ima Momu."
	

U prvom primeru vidimo da se traži regularni izraz koji ima modifikator g. To znači da se traži svako poklapanje sa zadatim šablonom. U tom slučaju kao rezultat dobijamo niz podstringova koji su se poklopili.

Ako se traži samo jedno poklapanje (u drugom primeru), opet dobijamo niz, ali samo sa jednim elementom. Taj element predstavlja prvi "pogođeni" podstring, a ono što nas takođe zanima je index - dodatno svojstvo ovog niza koje sadrži poziciju na kojoj se podstring nalazi. Kao dodatak, tu je i svojstvo input koje sadrži original stringa u kome je vršena pretraga.

js-str-sablon-sr
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.