PHP (regularni izraz) - što je to? Primjeri i provjera regularnih izraza
Prilikom rada s tekstovima na bilo kojem suvremenom programskom jeziku, razvojni programeri stalno se susreću s zadacima za provjeru unesenih podataka za podudaranje željenog predloška, traženje i zamjena dijelova testova i druge tipične operacije za obradu simboličnih informacija. Razvoj vlastitih algoritama za provjeru dovodi do gubitka vremena, nekompatibilnosti programskog koda i složenosti u njegovom razvoju i modernizaciji.
sadržaj
Brzi razvoj interneta i jezika razvoja WEB-a zahtijevao je stvaranje univerzalnih i kompaktnih objekata za obradu teksta s minimalnim potrebnim brojem koda. PHP jezik nije izuzetak i popularan među početnicima i profesionalnim programerima. Regularni izraz kao jezik predložaka teksta omogućuje vam pojednostavljenje zadatka obrade teksta i smanjenje programskog koda desetcima i stotinama redaka. Mnogi se zadaci ne mogu riješiti bez njega.
Redoviti izrazi u PHP-u
PHP jezik sadrži tri mehanizma za rad s regularnim izrazima - "ereg", "mb_ereg" i "preg". Najčešći je sučelje "preg", čije funkcije omogućuju pristup knjižnici za podršku regularnom izrazu PCRE, izvorno razvijenom za Perl jezik, koji je uključen u PHP paket. Traženje preg-funkcija u određenom tekstu nizova utakmica, prema određenom uzorku u jeziku regularnih izraza.
Osnove sintakse
U okviru kratkog članka nije moguće detaljno opisati cjelokupnu sintaksu regularnih izraza, za tu svrhu postoji posebna literatura. Ovdje su samo osnovni elementi za prikazivanje širokog spektra mogućnosti za razvojnog programera i razumijevanje primjera kodova.
U PHP-u, regularni izraz formalno je definiran vrlo težak, pa smo pojednostavili opis. Regularni izraz je tekstni niz. Sastoji se od predložaka s razgraničenom oznakom i modifikatora koji označava kako postupati s njom. Moguće je uključiti različite načine i ponavljanja u predlošcima.
Na primjer, u izrazu / d {3} - d {2} - d {2} / m razdjelnik će biti "/", zatim predložak ide i simbol «M» bit će modifikator.
Sve snage regularnih izraza su kodirane metakarakterima. Glavni metakarakter jezika je obrnuta strana - "". Ona mijenja vrstu znaka koji slijedi na suprotnu (tj. Obični se znak pretvara u metakarakter i obrnuto). Drugi važan metakarakter je izravna linija "|", koja određuje alternativne varijante predloška. Više primjera metakaraktera:
^ | Početak objekta ili niza |
( | Početak podpatrusa |
) | Kraj podprograma |
{ | Podrijetlo kvantificiranja |
} | Kraj kvantificiranja |
d | decimalna znamenka od 0 do 9 |
D | bilo koji znak koji nije znamenka |
s | prazni znak, prostor, kartica |
w | rječnik karaktera |
PHP, obrada regularnih izraza, smatra prostor kao zaseban značajan simbol, tako da su izrazi ABCDEF i ABC WHERE različiti.
subpatterns
U PHP-u, redoviti subpatterns se dodjeljuju u zagradama i ponekad nazivaju "subexpressions". Izvršite sljedeće funkcije:
Dodjeljivanje alternativa. Na primjer, groznica (nešto | ptica |) podudara se s riječima "Toplina", "Firebird" i «Hot». I bez zagrada, to će biti samo prazan niz, "ptica" i "pečena".
"Uzbudljiva" subpattern. To znači da ako podnaslov odgovara predlošku, tada se sve utakmice prenose kao rezultat. Radi jasnoće dajemo primjer. Sljedeći regularni izraz je dan: dobitnik dobiva ((zlato | pozlaćeno) (medalja | šalica)) - i niz za traženje utakmica: "Pobjednik dobiva zlatnu medalju". Uz izvorni izraz, rezultat pretraživanja bit će: "Zlatna medalja", "Medalja", "zlato".
Operatori ponavljanja (kvadrifiera)
Prilikom stvaranja regularnih izraza, često je potrebno analizirati ponavljanje brojeva i simbola. Ovo nije problem ako nema previše ponavljanja. Ali što ako ne znamo njihov točan broj? U tom slučaju morate koristiti posebne metakaraktere.
Za opis ponavljanja upotrijebljeni su kvadratići - metakarakteri za određivanje broja. Quadrices su dvije vrste:
- općenito, zatvoreno u zagradama;
- smanjena.
Ukupni količnik dirnuta minimalni i maksimalni broj ponavljanja dopuštenog elementa u obliku dvaju brojeva u zagradama, kao što je x {2,5}. Ako je maksimalni broj ponavljanja nepoznat, drugi argument nije naveden: x {2,}.
Smanjeni kvantificatori su simboli za najčešća ponavljanja kako bi se izbjeglo nepotrebno preopterećenje sintakse. Uobičajeno se koriste tri kratice:
1. * - nula i više ponavljanja, što je ekvivalent za {0,}.
2. jedan ili više ponavljanja, tj. {1,}.
3.? - nula ili samo jedna ponavljanja - {0,1}.
Primjeri regularnih izraza
Za one koji proučavaju redovite izraze, primjeri su najbolji udžbenik. Dati ćemo nekoliko koji pokazuju svoje brojne mogućnosti s minimalnim naporima. Svi kodovi programa u potpunosti su kompatibilni s PHP 4.x i novijim verzijama. Da biste u potpunosti razumjeti sintaksu i korištenje svih mogućnosti jezika preporučamo knjigu J .. Friedl „regularnim izrazima”, koji je u potpunosti smatra sintakse, a tu su i primjeri regularnih izraza, ne samo PHP, ali i za Python, Perl, MySQL, Java, Ruby, i C #.
Provjera ispravnosti adrese e-pošte
Zadatak. Postoji internetska stranica na kojoj se od posjetitelja traži adresa e-pošte. Redovni izraz mora provjeriti ispravnost primljene adrese prije slanja poruka. Ček ne jamči da navedeni poštanski sandučić zaista postoji i prihvaća slova. Ali moguće je ukloniti namjerno pogrešne adrese.
Rješenje. Kao i na bilo kojem programskom jeziku, redoviti izrazi potvrde adrese e-pošte u PHP-u mogu se implementirati u PHP-u na različite načine, a primjeri u ovom članku nisu konačna i jedina opcija. Stoga ćemo u svakom slučaju navesti zahtjeve koje treba uzeti u obzir prilikom programiranja, a specifična implementacija u potpunosti ovisi o razvojnom programeru.
Dakle, izraz koji provjerava valjanost e-pošte trebao bi provjeriti sljedeće uvjete:
- Prisutnost simbola @ u izvornom nizu i odsutnost razmaka.
- Dio domene adrese, izvan simbola @, sadrži samo važeće znakove za nazive domena. Isto vrijedi i za korisničko ime.
- Prilikom provjere korisničkog imena, morate utvrditi jesu li prisutni posebni znakovi, kao što je apostrof ili okomita linija. Takvi simboli su potencijalno opasni i mogu biti sadržani u napadima kao što su SQL injekcije. Izbjegnite te adrese.
- Nazivi korisnika dopuštaju samo jednu točku, koja ne može biti prvi ili posljednji znak u nizu.
- Naziv domene mora sadržavati najmanje dva i najviše šest znakova.
Primjer koji uzima u obzir sve ove uvjete može se vidjeti na donjoj slici.
Provjera valjanih URL-ova
Zadatak. Provjerite je li navedeni tekstni niz valjan URL adresa. Ponovno, regularni izrazi URL-a mogu se implementirati na različite načine.
Rješenje. Naša konačna verzija je sljedeća:
/^(https?: )?([da-z.-]+).([az.{{2,6})([/w .-] *) * /? $ /
Sada analiziramo njegove komponente detaljnije pomoću slike.
stavku 1 | Prije URL-a ne može biti znakova |
stavka 2 | Provjeravamo obvezni predbroj "http" |
stavka 3 | Ne smije sadržavati nikakve znakove |
stavka 4 | Ako postoji "s", URL ukazuje na sigurnu vezu "https" |
stavka 5 | Obavezno "//" |
stavka 6 | Nema znakova |
točka 7-9 | potvrđivanje domene prve razine i prisutnost točke |
p.10-13 | Kontrola pravilnosti pisanja druge razine domene i točke |
Stavka 14-17 | Struktura URL datoteke je skup brojeva, slova, podvlake, crtice, točkice i krajevi na kraju |
Provjera brojeva kreditnih kartica
Zadatak. Potrebno je provjeriti ispravnost unesenog broja plastične kartice najčešćih platnih sustava. Varijanta se smatra samo za karte Visa i MasterCard.
Rješenje. Prilikom izrade izraza morate uzeti u obzir moguću prisutnost razmaka u unesenom broju. Brojevi na karti podijeljeni su u skupine za lakše čitanje i diktiranje. Dakle, sasvim je prirodno da osoba može pokušati unijeti broj na taj način (tj. Pomoću razmaka).
Napišite univerzalni izraz koji uzima u obzir moguće prostore i crtice je teže nego samo ispuštanje svih znakova osim znamenki. Stoga se u izrazu preporuča upotreba metakaraktera / D, koja briše sve znakove osim znamenki.
Sada možete otići izravno na potvrdu broja. Sve tvrtke koje izdaju kreditne kartice koriste jedinstveni format broja. U primjeru se koristi, a klijent ne mora unijeti naziv tvrtke - određuje se brojem. Visa kartice uvijek počinju s 4 i imaju duljinu od 13 ili 16 znamenki. MasterCard počinje u rasponu od 51 do 55 s duljinom od broja 16. Kao rezultat toga dobivamo sljedeći izraz:
Prije obrade narudžbe možete izvršiti dodatnu provjeru zadnje znamenke broja koji se izračunava pomoću algoritma Mjesec.
Provjera telefonskih brojeva
Zadatak. Provjera ispravnosti unesenog telefonskog broja.
Rješenje. Broj znamenaka u fiksnim i mobilnim telefonskim brojevima znatno razlikuju se ovisno o zemlji, tako univerzalno provjeriti pomoću regularnih izraza, broj telefona ispravno nemoguće. Ali međunarodni brojevi imaju strogi oblik i izvrsni su za provjeru prema predlošku. Štoviše, sve više i više nacionalnih telefonskih operatera pokušava se pridržavati jednog standarda. Struktura broja je sljedeća:
+CCC.NNNNNNNNNNxEEEE, gdje je:
- C je šifra zemlje koja se sastoji od 1 do 3 znamenke.
- N - broj do 14 znamenki.
- E je izborno proširenje.
Plus je neophodan element, a znak x je prisutan samo ako je potrebno proširenje.
Kao rezultat toga imamo sljedeći izraz:
[4] (4) (4)
Brojevi u rasponu
Zadatak. Potrebno je osigurati da cijeli broj odgovara određenom rasponu. Osim toga, potrebno je da se regularni izrazi pronađu samo iz raspona vrijednosti.
Rješenje. Evo nekoliko izraza za nekoliko najčešćih slučajeva:
Odredite sat od 1 do 24 | ^ (1 [0-2] | [1-9]) $ |
Dan u mjesecu 1-31 | ^ (3 [01] | [12] [0-9] | [1-9]) $ |
Druga ili minuta 0-59 | ^ [1-5]? [0-9] $ |
Broj od 1 do 100 | ^ (100 | [1-9]? [0-9]) $ |
Dan u godini 1-366 | ^ [36] [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} | [1-9] [0-9] |
Potražite IP adresu
Zadatak. Morate utvrditi je li navedeni niz važeća IP adresa u IPv4 formatu u rasponu od 000.000.000.000-255.255.255.255.
Rješenje. Kao u bilo kojem zadatku u PHP-u, regularni izraz ima mnogo varijanti. Na primjer, ovo:
Online test izraza
Provjera regularnih izraza za točnost za početak programera može biti teško zbog složenosti sintakse, različit od "normalnih" programskih jezika. Da biste riješili taj problem, mnogi su testeri na mreži koji vam omogućuju da lako provjerite ispravnost stvorenog predloška na stvarnom tekstu. Programer unosi izraz i podatke za provjeru i odmah vidi rezultate obrade. Obično postoji i referentni odjeljak u kojem su detaljno opisani regularni izrazi, primjeri i razlike u implementaciji najčešćih programskih jezika.
No potpuno se vjeruje rezultatima mrežnih usluga ne preporučuje se svim razvojnim programerima koji koriste PHP. Regularni izraz, osobno napisan i ovjeren, povećava kvalifikaciju i jamči odsutnost pogrešaka.
- Prvi Java program je Hello World
- SQL datoteku. SQL format datoteke: opis proširenja
- Java: regularni izrazi, posebni znakovi
- Kako pisati u php datoteku
- Programsko okruženje "Pascal ABC"
- Analiza: što je i kako je stvoren
- jаvascript, regularni izraz: primjeri, provjeravanje regularnih izraza
- Redoviti izrazi (PHP). PHP: regularni izrazi, primjeri
- PHP: regularni izrazi, funkcija preg match all
- Operator zadatka u `Pascal`: što se namjerava, koje radnje se obavljaju
- Programski jezik c (s)
- Što je XML format nego otvoriti i kako raditi s njom.
- Skriptni programski jezici: zadaci, značajke i prednosti
- Programsko okruženje. Na putu stvaranja vlastitog softvera
- Koji je programski kod, aplikacija, pogreške
- Upotreba zamjenske zamjenske zamjene ()
- Uvjetne izjave ako / drugo u Pythonu: sintaksa i primjena
- Notepad Regular Expressions: Opis, zamjena i primjeri
- Mjesto ulaska: primjeri učinkovite upotrebe
- Najlakši programski jezik za početnike
- Kako napisati program u Notepad