Regularni izrazi, popularno poznati kao "regex" ili "regexp", nizovi su koji opisuju obrazac pretraživanja. Možete koristiti regularne izraze da biste provjerili sadrži li niz određeni uzorak, izdvojili informacije iz niza i zamijenili dijelove niza novim tekstom.
Naučite osnovnu sintaksu regularnih izraza i kako ih koristiti u JavaScriptu.
Osnovna sintaksa regularnih izraza
Postoje dva načina na koje možete stvoriti regularni izraz u JavaScriptu: pomoću literala regularnog izraza i pomoću RegExp konstruktor.
Literal regularnog izraza sastoji se od uzorka zatvorenog između kosih crta, iza kojeg slijedi neobavezna zastavica.
Na primjer:
// Bez zastave
konst regularni izraz_1 = /pattern/
// Sa zastavom
konst regularni izraz_2 = /pattern/zastava
Oznaka je izborni parametar koji možete dodati regularnom izrazu da biste izmijenili njegovo ponašanje. Na primjer:
konst regexFlag = /the/g;
The g zastavica označava da izraz treba odgovarati svim pojavljivanjima, a ne samo prvom.
Također možete stvoriti regularni izraz pomoću RegExp konstruktor. Na primjer:
konst regularni izraz = noviRegExp("Uzorak", "g");
The RegExp konstruktor uzima dva parametra: obrazac—string ili literal regularnog izraza—i zastavicu(e).
Postoje dvije prilično uobičajene oznake koje ćete koristiti s regularnim izrazom u JavaScriptu:
- g: Globalna zastavica čini da regularni izraz odgovara svim pojavljivanjima uzorka u zadanom nizu umjesto jednom pojavljivanju.
- ja: Oznaka koja ne razlikuje velika i mala slova čini da regularni izraz zanemaruje velika i mala slova uzorka i podudara velika i mala slova u zadanom nizu.
Zastavice možete koristiti zajedno u jednom izrazu bilo kojim redoslijedom. Na primjer:
konst regularni izraz = noviRegExp("Uzorak", "gi");
Ovaj izraz odgovara svim pojavljivanjima "uzorka", bez obzira na velika i mala slova.
U regularnim izrazima, određeni znakovi, poznati kao metakarakteri, imaju posebna značenja. Možete ih koristiti za spajanje određenih vrsta znakova ili uzoraka.
Ovdje su neki od najčešće korištenih metakaraktera i njihova značenja:
- Zamjenski znak (.): Ovaj znak odgovara bilo kojem pojedinačnom znaku osim novog retka. To je koristan alat za spajanje uzoraka s nepoznatim znakovima.
- Zvijezda Kleene (*): Ovaj znak odgovara nula ili više pojavljivanja prethodnog znaka ili grupe. Omogućuje da se prethodni znak ili grupa pojavi bilo koji broj puta u nizu, uključujući nulu.
- Izborni znak (?): Ovaj znak odgovara nuli ili jednom pojavljivanju prethodnog znaka ili grupe.
- Sidro početka linije (^): Ovaj znak odgovara samo početku retka ili niza.
- Sidro na kraju linije ($): Ovaj znak odgovara kraju retka ili niza.
- Skup znakova/klasa ([]): Skup znakova odgovara bilo kojem znaku iz skupa znakova u nizu. Definirate ih uglatim zagradama [] i možete navesti skup fiksnih znakova, posebnih znakova ili određenih skupina znakova.
- Izmjenični znak (|): Ovaj znak odgovara prethodnom ili sljedećem znaku ili grupi. Djeluje slično kao OR JavaScript operator.
- Znak grupiranja (()): Znak za grupiranje omogućuje vam grupiranje znakova ili podizraza, primjenu operatora na njih kao jedinicu i kontrolu redoslijeda operacija.
Testiranje niza u odnosu na regularni izraz u JavaScriptu
U JavaScriptu možete testirati niz prema regularnom izrazu pomoću nekoliko metoda.
Ovaj odjeljak pretpostavlja da imate osnovno razumijevanje regularnih izraza i uzoraka. Ako vam se ne sviđaju regularni izrazi, provjerite vodič za početnike kroz regularne izraze prvi.
Metoda ispitivanja
The .test() metoda vraća booleovu vrijednost koja pokazuje odgovara li regularni izraz nizu ili ne. Ova metoda uzima niz za izvođenje pretraživanja kao argument. Posebno je koristan za jednostavne provjere.
Na primjer:
neka regularni izraz = /.com$/;
neka str = "example.com";
konzola.log (regex.test (str)); // istina
Ovaj regularni izraz odgovara nizu koji završava s ".com".
Izvršna metoda
The .exec() metoda vraća niz koji sadrži odgovarajući tekst i sve snimljene grupe ili ništavan ako ne pronađe podudaranje. Ova metoda uzima niz za izvođenje pretraživanja kao argument. Korisno je za složenije regularne izraze.
Na primjer:
neka regularni izraz = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
neka str = "123-456-7890";
neka rezultat = regex.exec (str);
ako (rezultat !== ništavan) {
konzola.log(`${rezultat[0]} je važeći broj telefona`);
} drugo {
konzola.log("Nevažeći broj telefona");
}
Gornji regularni izraz odgovara nizu koji počinje izbornim "(", tri znamenke i izborno ")". Zatim traži izborni "-", ".", ili razmak nakon kojeg slijede tri znamenke. Konačno traži izborni "-", ".", ili razmak iza kojeg slijede četiri znamenke na kraju niza.
Ovaj regularni izraz odgovara telefonskim brojevima u formatu “(xxx) xxx-xxxx”, “xxx-xxx-xxxx”, “xxx.xxx.xxxx” ili “xxx xxx xxxx”.
Ako pronađe podudaranje, .exec() vraća niz koji sadrži odgovarajući tekst i sve snimljene grupe (definirane zagradama). Uključit će svaku grupu kao dodatni element u nizu koji vraća. To vam omogućuje pristup određenim dijelovima podudarnog teksta, što vam može pomoći da izvučete informacije iz niza.
Metoda zamjene
The .zamijeniti() metoda traži podudaranje između regularnog izraza i niza i zamjenjuje odgovarajući tekst s navedenim zamjenskim tekstom. Ovo je metoda string objekata i uzima regularni izraz i zamjenski niz kao argumente.
Na primjer:
neka niz = "Brza smeđa lisica preskače lijenog psa.";
neka izraz = /The/gi;
neka newString = string.replace (izraz, "a");
konzola.log (noviNiz); // "brza smeđa lisica preskače lijenog psa."
Ovaj primjer naziva zamijeniti() metoda na niz varijabla, prosljeđivanje regularnog izraza, izraz. Regularni izraz će odgovarati svim pojavljivanjima "The" u nizu, bez obzira na velika i mala slova. Poziv metode replace upućuje je da zamijeni svako pojavljivanje nizom "a".
Razmatranja izvedbe pri korištenju regularnih izraza
Iako regularni izrazi pomažu u podudaranju i manipuliranju nizovima, oni također mogu biti skupi u smislu izvedbe. Izrada uzoraka što je moguće specifičnija i njihova jednostavnost ključna je za njihovu učinkovitost.