RačunalaProgramiranje

PHP (regex) - što je to? Primeri i provjeru regularnih izraza

Kada radite sa tekstom u svakom modernom programskom jeziku, programeri stalno upoznati sa ciljevima ulaznih validacije za usklađivanje sa željenim uzorkom, pretraživanje i zamijeniti fragmenti test i druge vrste obrade poslovanja informacija karaktera. Razvijati svoju validacije algoritama dovodi do gubitka vremena, kompatibilnosti kod i složenosti u svom razvoju i modernizaciji.

Ubrzanog razvoja interneta i web-dizajn jezicima propisanim stvaranje svestran i kompaktan sredstva za obradu teksta s minimalnim iznos potreban za ovaj kod. To nije izuzetak i je popularan među početnicima i profesionalni programeri PHP jezika. Regularni izraz jezik kao tekst predloške za pojednostaviti zadatak rukovanja teksta i smanjiti broj za desetine i stotine linija. Mnogi problemi ne mogu biti riješeni na sve bez nje.

Regularni izrazi u PHP

PHP jezik ima tri mehanizma za rad sa regularnim izrazima - «ereg», «mb_ereg» i «preg». Najčešći je interfejs «preg», čija je funkcija omogućiti pristup biblioteci regularni izraz podrške PCRE, originalno razvijen za Perl jezik, koji je uključen u PHP paketu. Preg traže funkcije u datom tekstu string podudaranje, u skladu sa određenim obrazac na jeziku regularnih izraza.

sintaksa Osnove

Kao dio kratkog članka je nemoguće opisati u detalje cijelog regularni izraz sintakse, za to postoji poseban literature. Predstavljamo samo glavne elemente pokazati mogućnosti za developer i shvatiti primjere koda.

U PHP regularni izraz je formalno definiran vrlo teško, a samim tim i pojednostaviti opis. Regularni izraz je tekstualni niz. Sastoji se od posvećen separatora predložak i modifikator ukazuje na način da se to srediti. Moguće uključivanje u razne alternative i ponavljanja obrazaca.

Na primjer, u izrazu / \ d {3} - \ d {2} - \ d {2} / m šestar je "/", zatim predložak, a simbol «m» je modifikator.

Sva moć regularnih izraza je kodirana pomoću meta-znakova. Glavni jezik metacharacter je obrnuta kosa crta - "\". To mijenja vrstu sljedeći znakovi na suprotnoj (npr. E. pretvoriti u običan lik džoker i obrnuto). Još jedan važan metacharacter je ravna linija «|», navodi alternativa predložak. Više primera meta-znakova:

^ Započeti predmet ili string
( Start subpattern
) Kraj subpattern
{ Početak kvantifikator
} Kraj kvantifikator
\ D decimalni broj od 0 do 9
\ D bilo koji znak koji nije broj
\ s prazan simbol, prostor, tab,
\ w simbol rječnik

PHP, obrade regularnih izraza, prostor smatra kao zasebna važeći znak, tako da je izraz XYZ i ABC gde su drugačiji.

subpatterns

U PHP-u redovnom subpatterns zagradama, a oni se ponekad nazivaju "subexpressions". Izvedite sljedeće funkcije:

  1. Alokacija alternative. Na primjer, topline obrazac (nešto | Bird |) se poklapa sa riječima "topline", "Žar ptica" i "vruće". I bez zagrada to će biti samo prazan string, "ptica" i "vruće".

  2. "Spectacular" subpattern. To znači da ako je obrazac odgovara podniz, a zatim se vraća sve utakmice. Za jasnoću, dajemo primjer. S obzirom na sljedeće regularni izraz: pobjednik dobiva ((zlato | pozlaćeni) (medalja | cup)) - i string za utakmice ", pobednik dobija zlatnu medalju." Osim početnog fraza, rezultati pretrage će se izdati: "Zlatna medalja", "medalje", "zlato".

Operatori ponavljanja (kvadrifikatory)

U sastavljanju regularni izraz je često potrebno analizirati ponavljanje brojeva i simbola. To nije problem, ako ne i puno ponavljanja. Ali šta da radim kad ne znamo njihov tačan broj? U tom slučaju potrebno je koristiti posebne metacharacters.

Za opis ponavljanja koriste kvadrifikatory - metacharacters navesti broj. Kvadrifikatory su dva tipa:

  • uobičajeno u zagradama;
  • smanjena.

Sve u svemu kvantifikator dirnut minimalni i maksimalni broj dozvoljenih ponavljanja elementa u obliku dva broja u zagradama, kao što su x {2,5}. Ako se ne zna maksimalni broj ponavljanja, drugi argument nije specificirana: x {2}.

Skraćeni kvantifikatore su simboli za najčešće ponavljanja, kako bi se izbjeglo nepotrebno preopterećenja sintakse. Obično postoje tri reza:

1. * - nula ili više ponavljanja, što je ekvivalentno {0,}.

2. + - jedan ili više ponavljanja, odnosno, {1} ...

3.? - nula ili samo jedan ponoviti - {0,1}.

Primjeri regex

Za one koji uče regularne izraze, primjeri - najbolji udžbenik. Dajemo nekoliko koje pokažu svoje mogućnosti uz minimalan napor. Sve kod je u potpunosti kompatibilan s verzijama PHP 4.x i iznad. Da biste u potpunosti razumjeti sintaksu i korišćenje svih jezika funkcije preporučujemo knjigu J .. Friedl "regularnih izraza", koji je u potpunosti u obzir sintakse, a tu su i primjeri regularnih izraza, ne samo PHP-u, ali i za Python, Perl, MySQL, Java, Ruby, i C #.

Validacija E-mail adresa

Zadatak. Tu je Internet stranicu na kojoj posjetitelj se traži e-mail adresa. Regularni izraz mora provjeriti ispravnost adresama pre slanja poruke. Ček ne garantuje da će navedeni poštanski sandučić zaista postoji i prima poruke. Ali iskorijeni očigledno pogrešne adrese može.

Odluke. Kao i kod svakog programskog jezika, u PHP regex provjeru e-mail adresu može implementirati na različite načine, i primjere u ovom članku nisu konačni i jedini izbor. Dakle, u svakom slučaju, mi ćemo osigurati listu zahtjeva koje treba uzeti u obzir prilikom programiranja i specifične realizacije u potpunosti zavisi od programera.

Prema tome, izraz koji testira ispravnu e-mail, treba provjeriti sljedeće uvjete:

  1. Prisustvo u startnoj simbol @, i ne postoje praznine.
  2. Domenu dio adresa @ simbol, sadrži samo znakovi za imena domena. Isto se odnosi i na ime korisnika.
  3. Kada provjera korisničko ime je potrebno utvrditi postojanje posebnih znakova kao što su apostrof ili vertikalne linije. Takvi simboli su potencijalno opasni i mogu biti sadržane u takvim vrstama napada koji SQL injection. Izbjegavajte adrese.
  4. korisnička dozvoljavaju samo jedan bod, koji ne može biti prvi ili zadnji znak u nizu.
  5. Naziv domene mora sadržavati najmanje dva, a ne više od šest znakova.

Primjer, uzimajući u obzir sve ove uvjete se može vidjeti na sljedećoj slici.

Validacija URL

Zadatak. Provjeriti da li je navedeni tekst string važeću adresu URL. Još jednom napominjemo da regularnih izraza URL-provjera se može implementirati na različite načine.

Odluke. Naša konačna verzija je kako slijedi:

/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /

Sada analizirati njegove komponente detaljnije koristeći crtežu.

zahtjevu 1 Prije URL ne bi trebali imati bilo kakve znakove
Preuzmi 2 Provjerite prisustvo obavezno prefiks «http»
stavka 3 Ne smije biti simboli
Preuzmi 4 Ako postoji «e», URL ukazuje na sigurnu vezu «https»
Preuzmi 5 Potrebni dio "//"
Preuzmi 6 No likovi
str. 7-9 Provera prva domena nivo i prisustvo tačke
p.10-13 Provera domena pisanja drugog nivoa i tačka
p.14-17

Struktura datoteke URL - skup brojeva, slova, donje crte, crtice, točkice, i slash na kraju

Provjerite brojeve kreditnih kartica

Zadatak. Morate da implementiraju validaciju ušli broj kreditne kartice od najčešćih sistema plaćanja. A varijanta samo za kartice Visa i MasterCard.

Odluke. Prilikom kreiranja izraz trebate uzeti u obzir moguće prisustvo praznine u ulaznoj prostoriji. Cifre na karti su podijeljeni u grupe za lakše čitanje i diktata. Dakle, prirodno je da osoba može pokušati da unesete broj na ovaj način (npr. E. Upotreba prostora).

Napišite univerzalni izraz koji uzima u obzir moguće razmake ili crtice, je složenije nego jednostavno odbaciti sve znakove osim cifre. Stoga, preporučujemo koristeći džoker izraz / D, koji uklanja sve znakove osim cifre.

Sada možete ići direktno na kontrolni broj. Sve kompanije, kreditna kartica emitenata koristiti jedinstveni broj formata. U primjeru se koristi, a klijent ne treba da uđe u ime firme - to je određena brojem. Visa kartice uvijek počinju sa brojevima 4 i imaju dužinu od 13 ili 16 znamenki. MasterCard počinje u rasponu od 51-55 sa dugi niz 16. Kao rezultat toga, dobijamo sledeći izraz:

Prije obrade kako bi se dalje mogu testirati poslednje cifre broja, koji se obračunava na Luhn algoritam.

Provera broj telefona

Zadatak. Provjera ispravnosti ušli broj telefona.

Odluke. Broj znamenki u fiksnoj i mobilnoj telefonski brojevi variraju značajno u zavisnosti od zemlje, tako univerzalno provjeriti pomoću regularnih izraza, telefonski broj ispravno nemoguće. Ali međunarodne brojeve imaju stroge format i savršen za provjeru obrazac. Još više, tako da sve više i više nacionalnih operatera telefonski pokušavaju da ispune iste standarde. Struktura soba je kako slijedi:

+ CCC.NNNNNNNNNNxEEEE, gdje je:

- C - je kod zemlje koja se sastoji od 1-3 znamenki.

- N - broj do 14 znamenki.

- E - opcionalno proširenje.

Plus je neophodan element, i znak X je prisutan samo kada je to potrebno proširenje.

Kao rezultat toga imamo sljedeće izraz:

^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:?. X +)? $

Brojevi u rasponu

Zadatak. Neophodno je da se osigura slučajnost cijeli broj određenog raspona. Osim toga, potrebno je naći regularni izraz samo brojeve iz raspona.

Odluke. Evo nekoliko izraza za neke od najčešćih slučajeva:

Odrediti sat 1-24 ^ (1 [0-2] | [1-9]) $
Dan u mjesecu 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekundi ili minuta 0-59 ^ [1-5] [0-9] $
A 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]) ^ $

Pretraživanje IP-adrese

Zadatak. Potrebno je da se utvrdi da li je zadani string važeću IP-adresa u IPv4 formatu u rasponu od 000.000.000.000-255.255.255.255.

Odluke. Kao i kod svakog problem u jeziku PHP, regularni izraz ima mnogo varintov. Na primjer, ovo:

Online provjera izraza

Provjerite regex ispravno za početnike može biti teško zbog složenosti sintakse, koji se razlikuje od "običnih" programskim jezicima. Za rješavanje ovog problema, postoje mnoge online testerima izraza koje olakšavaju provjeriti ispravnost šablona ste kreirali u stvarnom tekstu. Programer unosi podatke izraz i verifikaciju i odmah vidjeti rezultat obrade. Obično je prisutan referenca odjeljak, koji detaljno navodi regularne izraze, primjeri i razlike implementacije za najviše prošireni jezika.

Ali, da bi u potpunosti povjerenje online servisa rezultati ne preporučuje za sve programere koji koriste PHP. Regularni izraz je napisano i provjeriti osoba, podiže kvalifikaciju i garantuje odsustvo grešaka.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 bs.unansea.com. Theme powered by WordPress.