Dobrodošli u ovaj potpuni vodič za regularne izraze u JavaScriptu! U ovom ćemo članku detaljno istražiti što su regularni izrazi, kako se koriste u JavaScriptu i kako vam mogu pomoći da pojednostavite i optimizirate svoj kod. Od osnova do praktičnih primjera, pokriti ćemo sve što trebate znati kako biste na najbolji način počeli iskorištavati regularne izraze u svojim JavaScript projektima. Pa počnimo!
Uvod u regularne izraze
Regularni izrazi obrasci su pretraživanja koji se koriste za pronalaženje i manipuliranje tekstom u znakovnim nizovima. Sastoje se od kombinacije doslovnih znakova i metaznakova, koji definiraju posebna pravila za pronalaženje podudaranja u tekstu. Ta pravila mogu uključivati traženje određenih znakova, raspona znakova, ponavljanja, alternativa i još mnogo toga.
U JavaScriptu se regularni izrazi stvaraju pomoću klase RegExp ili korištenjem doslovnog /patrón/. Uzorak je sam regularni izraz koji je zatvoren između kosih crta. Pogledajmo jednostavan primjer:
const regex = /hola/;
U ovom smo primjeru stvorili regularni izraz koji će tražiti niz "zdravo" unutar teksta. Sada kada imamo osnovno razumijevanje regularnih izraza, istražimo neke ključne koncepte i napredne tehnike za rad s njima u JavaScriptu.
Osnovna sintaksa regularnih izraza
Regularni izrazi u JavaScriptu sastoje se od nekoliko ključnih elemenata koji nam omogućuju definiranje složenijih obrazaca pretraživanja. Ovi elementi uključuju doslovne znakove, metaznakove, klase znakova, kvantifikatore, sidra i još mnogo toga. Pogledajmo neke primjere ovih elemenata:
Doslovni likovi
Doslovni znakovi su oni koji se traže onako kako se pojavljuju u tekstu. Na primjer, regularni izraz /hola/ tražit će niz znakova "hello" u tekstualnom nizu. Važno je napomenuti da regularni izrazi razlikuju velika i mala slova, pa /hola/ neće odgovarati "Hello" ili "HELLO".
Metakarakteri
Metaznakovi su posebni znakovi koji imaju posebno značenje u regularnim izrazima. Na primjer, metakarakter . Koristi se za predstavljanje bilo kojeg znaka osim novog retka. Još jedan uobičajeni metakarakter je ^, koji se koristi za označavanje početka tekstualnog niza. Na primjer, regularni izraz /^hola/ odgovarat će bilo kojem tekstualnom nizu koji počinje s "hello".
Klase znakova
Klase znakova koriste se za traženje bilo kojeg znaka unutar određenog skupa. Na primjer, regularni izraz /[aeiou]/ odgovarat će bilo kojem samoglasniku u tekstualnom nizu. Također je moguće koristiti raspone znakova u klasama znakova. Na primjer, regularni izraz /[a-z]/ odgovarat će svakom malom slovu.
Kvantifikatori
Kvantifikatori se koriste za određivanje broja pojavljivanja elementa u regularnom izrazu. Na primjer, kvantifikator * označava da se prethodni element može pojaviti nula ili više puta. Kvantifikator + označava da se prethodni element treba pojaviti jednom ili više puta. Na primjer, regularni izraz /a+/ odgovarat će jednom ili više "a" u tekstualnom nizu.
Sidra
Sidra se koriste za označavanje položaja podudaranja unutar tekstualnog niza. Na primjer, sidro \b odgovara granici riječi. Na primjer, regularni izraz /bholab/ odgovarat će samo riječi "zdravo" kao a puna riječ, bez podudaranja duljih riječi koje sadrže "zdravo" kao dio.
Ovo je samo nekoliko primjera osnovne sintakse regularnih izraza u JavaScriptu. Kako budemo napredovali kroz ovaj članak , istražit ćemo naprednije koncepte i tehnike za rad s regularnim izrazima u JavaScriptu.
Osnovno pretraživanje podudaranja
Jedna od najčešćih operacija koje se izvode s regularnim izrazima je traženje podudaranja u tekstualnom nizu. U JavaScriptu možemo koristiti metodu search() pronaći prvo podudaranje regularnog izraza u tekstualnom nizu. Pogledajmo primjer:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const indice = texto.search(regex); console.log(indice); // 7
U ovom primjeru koristili smo metodu search() pronaći prvo podudaranje regularnog izraza /mundo/ u tekstualnom nizu "Hello, world!" Metoda search() vraća indeks prvog pronađenog podudaranja ili -1 ako nije pronađeno podudaranje.
Osim metode search(), JavaScript također pruža druge korisne metode za rad s regularnim izrazima, kao što su match(), replace(), split() y test(). Svaka od ovih metoda ima svoju svrhu i može se koristiti prema vašim specifičnim potrebama.
Korištenje modifikatora i zastavica
U JavaScriptu regularni izrazi mogu sadržavati modifikatore i oznake koji omogućuju fleksibilnija i prilagođenija pretraživanja. Modifikatori se dodaju na kraj regularnog izraza i mijenjaju njegovo ponašanje. Neki od najčešćih modifikatora su:
ja (neosjetljiv)
Modifikator i koristi se za pretraživanje bez obzira na velika i mala slova. Na primjer, regularni izraz /hola/i odgovarat će i "hello" i "Hello" ili "HELLO".
g (globalno)
Modifikator g Koristi se za izvođenje globalnog pretraživanja na cijelom tekstualnom nizu, umjesto zaustavljanja na prvom pronađenom podudaranju. Na primjer, regularni izraz /a+/g će odgovarati svim pojavljivanjima jednog ili više "a" u tekstualnom nizu.
m (više reda)
Modifikator m Koristi se za izvođenje pretraživanja u više redaka unutar tekstualnog niza. Na primjer, regularni izraz /^hola/m odgovarat će riječi "zdravo" na početku svakog retka u tekstualnom nizu.
Osim modifikatora, JavaScript također dopušta korištenje zastavica u regularnim izrazima. Zastavice se dodaju nakon druge kose crte kada se stvara regularni izraz pomoću klase RegExp. Neke od najčešćih zastava su:
ja (neosjetljiv)
Kao modifikator i, zastava i izvodi pretraživanje bez obzira na velika i mala slova. Na primjer, regularni izraz new RegExp("hola", "i") odgovarat će i "hello" i "Hello" ili "HELLO".
g (globalno)
Kao modifikator g, zastava g izvodi globalno pretraživanje cijelog tekstualnog niza. Na primjer, regularni izraz new RegExp("a+", "g") će odgovarati svim pojavljivanjima jednog ili više "a" u tekstualnom nizu.
m (više reda)
Kao modifikator m, zastava m izvodi pretragu u više redaka unutar tekstualnog niza. Na primjer, regularni izraz new RegExp("^hola", "m") odgovarat će riječi "zdravo" na početku svakog retka u tekstualnom nizu.
Korištenje modifikatora i zastavica u regularnim izrazima JavaScripta može biti vrlo korisno za prilagođavanje pretraživanja različitim slučajevima i specifičnim zahtjevima. Eksperimentirajte s njima i otkrijte kako možete maksimalno iskoristiti te značajke u svom kodu.
Metaznakovi i posebni znakovi
Metaznakovi i posebni znakovi ključni su elementi u regularnim izrazima koji nam omogućuju snažnija i fleksibilnija pretraživanja. Već smo spomenuli neke metakaraktere, kao npr . y ^, ali postoji mnogo više koje možete koristiti u svojim regularnim izrazima. Pogledajmo neke od najčešćih metakaraktera i posebnih znakova:
. (točka)
Metakarakter . Koristi se za predstavljanje bilo kojeg znaka osim novog retka. Na primjer, regularni izraz /h.t/ podudarat će se s "hat", "hot", "hit" i bilo kojom drugom riječi od tri slova koja počinje s "h" i završava s "t."
\ (obrnuta kosa crta)
Obrnuta kosa crta koristi se za izbjegavanje posebnih znakova u regularnom izrazu. Na primjer, ako želite tražiti doslovnu točku u tekstualnom nizu, morate je izbjeći pomoću obrnute kose crte. Uobičajeni izraz /www\.google\.com/ odgovarat će tekstualnom nizu "www.google.com".
\d (znamenka)
Metakarakter \d koristi se za traženje bilo koje znamenke od 0 do 9. Na primjer, regularni izraz /\d+/ će se podudarati s bilo kojom jednom ili više znamenkastim brojem u tekstualnom nizu.
\w (alfanumerički znak)
Metakarakter \w koristi se za traženje bilo kojeg alfanumeričkog znaka (velikih i malih slova, znamenki i podvlaka). Na primjer, regularni izraz /\w+/ odgovarat će bilo kojoj riječi od jednog ili više alfanumeričkih znakova u tekstualnom nizu.
Ovo je samo nekoliko primjera metaznakova i posebnih znakova koje možete koristiti u regularnim izrazima. Kako se bolje upoznajete s regularnim izrazima u JavaScriptu, otkrit ćete široku paletu opcija za pročišćavanje pretraživanja i manipulacije tekstom.
Klase i rasponi znakova
Klase znakova još su jedan ključni element u regularnim izrazima koji nam omogućuju pretraživanje bilo kojeg znaka unutar određenog skupa. U JavaScriptu možemo koristiti zagrade [] za definiranje klase znakova. Pogledajmo neke primjere klasa i raspona znakova:
[aeiou]
Klasa karaktera [aeiou] odgovarat će bilo kojem samoglasniku u tekstualnom nizu. Na primjer, regularni izraz /[aeiou]/ odgovarat će "a", "e", "i", "o" ili "u" u tekstualnom nizu.
[the]
Raspon znakova [a-z] odgovarat će svakom malom slovu u engleskoj abecedi. Na primjer, regularni izraz /[a-z]/ odgovarat će svakom malom slovu u tekstualnom nizu.
[0-9]
Raspon znakova [0-9] će odgovarati bilo kojoj znamenki od 0 do 9 u tekstualnom nizu. Na primjer, regularni izraz /[0-9]/ odgovarat će bilo kojem jednocifrenom broju.
[A-Z-z]
Klasa karaktera [A-Za-z] će odgovarati bilo kojem velikom ili malom slovu u engleskoj abecedi. Na primjer, regularni izraz /[A-Za-z]/ odgovarat će bilo kojem slovu u tekstualnom nizu.
Klase i rasponi znakova omogućuju nam definiranje specifičnih skupova znakova za traženje u regularnom izrazu. Upotrijebite ih kako biste svoja pretraživanja prilagodili svojim posebnim potrebama i ograničenjima.
Kvantifikatori i ponavljanja
Kvantifikatori i ponavljanja ključni su elementi u regularnim izrazima koji nam omogućuju da odredimo broj pojavljivanja elementa u tekstualnom nizu. Pogledajmo neke od najčešćih kvantifikatora u JavaScriptu:
* (zvjezdica)
Kvantifikator * označava da se prethodni element može pojaviti nula ili više puta. Na primjer, regularni izraz /a*/ odgovarat će nula ili više 'a' u tekstualnom nizu.
+ (više)
Kvantifikator + označava da se prethodni element treba pojaviti jednom ili više puta. Na primjer, regularni izraz /a+/ odgovarat će jednom ili više "a" u tekstualnom nizu.
? (pitanje)
Kvantifikator ? označava da se prethodni element može pojaviti nula ili jednom. Na primjer, regularni izraz /colou?r/ odgovarat će i "boja" i "boja".
{n} (točno n puta)
Kvantifikator {n} označava da se prethodni element mora pojaviti točno n puta. Na primjer, regularni izraz /a{3}/ odgovarat će točno tri "a" u tekstualnom nizu.
{n,} (najmanje n puta)
Kvantifikator {n,} označava da se prethodni element mora pojaviti najmanje n puta. Na primjer, regularni izraz /a{2,}/ odgovarat će dva ili više 'a' u tekstualnom nizu.
{n,m}
Kvantifikator {n,m} označava da se prethodni element mora pojaviti najmanje n puta i najviše m puta. Na primjer, regularni izraz /a{2,4}/ odgovarat će dva, tri ili četiri "a" u tekstualnom nizu.
Ovo je samo nekoliko primjera kvantifikatora koje možete koristiti u svojim regularnim izrazima. Kvantifikatori nam omogućuju da odredimo obrasce ponavljanja u tekstualnim pretragama i manipulacijama, što olakšava izdvajanje specifičnih informacija iz tekstualnih nizova.
Sidra i granice riječi
Sidra i granice riječi elementi su koji nam omogućuju da označimo položaj podudaranja unutar tekstualnog niza. Ovi elementi su posebno korisni kada želimo pretraživati cijele riječi ili provjeriti nalazi li se podudaranje na početku ili kraju retka. Pogledajmo neke primjere sidra i granica riječi:
\b (granica riječi)
Ograničenje riječi \b odgovara granici između alfanumeričkog znaka i nealfanumeričkog znaka. Na primjer, regularni izraz /\bjavascript\b/ će odgovarati samo riječi "javascript" kao cjelovita riječ, ne podudarajući se s dužim riječima koje sadrže "javascript" kao dio.
^ (početak retka)
Lik ^ Koristi se za označavanje početka retka u tekstualnom nizu. Na primjer, regularni izraz /^hola/ odgovarat će riječi "zdravo" na početku svakog retka u tekstualnom nizu.
$ (kraj retka)
Lik $ Koristi se za označavanje kraja retka u tekstualnom nizu. Na primjer, regularni izraz /mundo$/ odgovarat će riječi "svijet" na kraju svakog retka u tekstualnom nizu.
\A (početak teksta)
Lik \A Koristi se za označavanje početka cijelog teksta u tekstualnom nizu, a ne samo početka retka. Na primjer, regularni izraz /^\AHola/ odgovarat će riječi “Zdravo” na početku cijelog teksta.
\Z (kraj teksta)
Lik \Z koristi se za označavanje kraja cijelog teksta u tekstualnom nizu, a ne samo kraja retka. Na primjer, regularni izraz /Mundo\Z/ odgovarat će riječi "Svijet" na kraju cijelog teksta.
Sidra i granice riječi omogućuju nam traženje podudaranja na određenim mjestima unutar tekstualnog niza, što može biti korisno u situacijama u kojima želimo osigurati da je podudaranje na određenoj poziciji.
Grupe i hvatanja
Grupe i hvatanja su napredni elementi u regularnim izrazima koji nam omogućuju grupiranje podizražaja i njihovo hvatanje za kasniju upotrebu. Pogledajmo kako funkcioniraju grupe i snimanja:
( ) (zagrade)
Zagrade su Koriste se za grupiranje podizraze u regularnom izrazu. Na primjer, regularni izraz /(d{2})-(d{2})-(d{4})/ se koristi se za traženje datuma u formatu "dd-mm-gggg. Grupe ( ) Omogućuju nam odvojeno bilježenje vrijednosti dana, mjeseca i godine.
\1, \2, \3 (reference grupe)
Reference grupe koriste se za upućivanje na prethodno snimljene grupe u regularnom izrazu. Na primjer, regularni izraz /(\w+) \1/ odgovarat će bilo kojoj riječi iza koje slijedi ponovljena ista riječ. Na primjer, "zdravo zdravo", "svijet svijeta" itd.
?: (grupa koja ne hvata)
Simbol ?: Koristi se za stvaranje grupa koje ne mogu uhvatiti. Ove se grupe koriste kada želimo grupirati podizraze, ali ne želimo uhvatiti rezultat. Na primjer, regularni izraz /https?:\/\/(?:www\.)?google\.com/ odgovarat će i “http://www.google.com” i “https://google.com”, ali će uhvatiti samo relevantni dio URL-a.
Grupe i snimanja nam omogućuju strukturiranje i organiziranje regularnih izraza na učinkovitiji i čitljiviji način. Također pružaju mogućnost snimanja određenih vrijednosti za kasniju upotrebu u našim aplikacijama.
Korisne metode za rad s regularnim izrazima
JavaScript pruža nekoliko korisnih metoda za rad s regularnim izrazima. Ove nam metode omogućuju izvođenje uobičajenih operacija kao što su pretraživanje, zamjena i dijeljenje tekstualnih nizova pomoću regularnih izraza. Pogledajmo neke od ovih metoda:
odgovara()
Metoda match() Koristi se za pronalaženje svih podudaranja regularnog izraza u tekstualnom nizu i vraćanje niza s rezultatima. Na primjer:
const texto = "¡Hola, mundo!"; const regex = /o/g; const coincidencias = texto.match(regex); console.log(coincidencias); // ["o", "o"]
U ovom primjeru koristili smo metodu match() pronaći sva podudaranja regularnog izraza /o/g u tekstualnom nizu "Hello, world!" Metoda match() vraća niz sa svim pronađenim podudaranjima.
zamijeniti ()
Metoda replace() koristi se za zamjenu podudaranja regularnog izraza u tekstualnom nizu novom vrijednošću. Na primjer:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const nuevoTexto = texto.replace(regex, "amigo"); console.log(nuevoTexto); // "¡Hola, amigo!"
U ovom primjeru koristili smo metodu replace() za zamjenu podudaranja regularnog izraza /mundo/ u tekstualnom nizu "Hello, world!" za riječ "prijatelj". Metoda replace() vraća novi tekstualni niz s izvršenim zamjenama.
podjela()
Metoda split() koristi se za dijeljenje tekstualnog niza u niz podnizova koristeći regularni izraz kao separator. Na primjer:
const texto = "Hola,mundo,amigo"; const regex = /,/g; const subcadenas = texto.split(regex); console.log(subcadenas); // ["Hola", "mundo", "amigo"]
U ovom primjeru koristili smo metodu split() da podijelite tekstualni niz "Hello,world,friend" u niz podnizova koristeći regularni izraz /,/g kao separator. Metoda split() vraća niz s rezultirajućim podnizovima.
test()
Metoda test() Koristi se za provjeru ima li regularni izraz podudaranja u tekstualnom nizu. Metoda se vraća true ako postoji podudaranje i false inače. Na primjer:
const texto = "Hola, mundo!"; const regex = /mundo/; const resultado = regex.test(texto); console.log(resultado); // true
U ovom primjeru koristili smo metodu test() provjeriti je li regularni izraz /mundo/ ima podudaranja u tekstualnom nizu "Hello, world!". Metoda test() vratiti true jer postoji slučajnost.
Ovo su samo neke od najčešćih metoda za rad s regularnim izrazima u JavaScriptu. Svaka od ovih metoda ima svoju svrhu i može se koristiti prema vašim specifičnim potrebama. Eksperimentirajte s njima i otkrijte kako vam mogu olakšati i ubrzati rad s regularnim izrazima.
Često postavljana pitanja
Što su regularni izrazi u JavaScriptu? Regularni izrazi u JavaScriptu su obrasci pretraživanja koji se koriste za pronalaženje i manipuliranje tekstom u nizovima znakova.
Kako stvoriti regularne izraze u JavaScriptu? Regularni izrazi u JavaScriptu stvaraju se pomoću klase RegExp ili korištenjem doslovnog /patrón/.
Koja je razlika između modifikatora i oznaka u regularnim izrazima? Modifikatori se dodaju na kraj regularnog izraza i mijenjaju njegovo ponašanje. Zastavice se dodaju nakon druge kose crte kada se stvara regularni izraz pomoću klase RegExp.
Koja je razlika između metode match() i metoda test()? Metoda match() Koristi se za pronalaženje svih podudaranja regularnog izraza u tekstualnom nizu i vraća niz s rezultatima. Metoda test() Koristi se za provjeru ima li regularni izraz podudaranja u tekstualnom nizu i vraća li Booleovu vrijednost.
Kako mogu uhvatiti određene vrijednosti pomoću grupa u regularnom izrazu? Grupe ( ) u regularnom izrazu omogućuju vam da uhvatite određene podizraze. Zatim možete referencirati te grupe pomoću referenci \1, \2, Itd
Koje metode mogu koristiti za rad s regularnim izrazima u JavaScriptu? Neke korisne metode za rad s regularnim izrazima u JavaScriptu su match(), replace(), split() y test(). Svaka od ovih metoda ima svoju svrhu i može se koristiti prema vašim specifičnim potrebama.
Zaključak
Regularni izrazi su moćan alat za rad s tekstom u JavaScriptu. Razumijevanje osnova , sintakse i naprednih tehnika regularnih izraza omogućit će vam učinkovito i točno pretraživanje, zamjenu i manipuliranje tekstualnim nizovima. Od osnovnog podudaranja do korištenja modifikatora, grupa i drugih korisnih metoda, naučili ste kako izvući maksimum iz regularnih izraza u svojim JavaScript projektima.
Ne zaboravite vježbati i eksperimentirati s različitim obrascima i slučajevima kako biste ojačali svoje razumijevanje i poznavanje regularnih izraza. Nemojte se ustručavati koristiti regularne izraze kako biste poboljšali učinkovitost i kvalitetu svog koda!
Indeks
- 1 Uvod u regularne izraze
- 2 Osnovna sintaksa regularnih izraza
- 3 Osnovno pretraživanje podudaranja
- 4 Korištenje modifikatora i zastavica
- 5 Metaznakovi i posebni znakovi
- 6 Klase i rasponi znakova
- 7 Kvantifikatori i ponavljanja
- 8 Sidra i granice riječi
- 9 Grupe i hvatanja
- 10 Korisne metode za rad s regularnim izrazima
- 11 Često postavljana pitanja
- 12 Zaključak