RačunalaProgramiranje

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

Prilikom rada s tekstom u bilo kojem modernom programskom jeziku, programeri stalno susret s ciljevima ulaznog validacije za usklađenost sa željenim uzorkom, pretraživanje i zamjena za ispitivanje fragmenata i druge vrste obrade operacija informacija znakova. Razviti svoje vlastite valjanosti algoritme dovodi do gubitka vremena, kod kompatibilnost i složenosti u svom razvoju i modernizaciji.

Brz razvoj Interneta i web-dizajn jezike potrebno stvaranje svestran i kompaktan pomoću obradu teksta s minimalnom količinom potrebnom za ovaj kod. To nije iznimka te je popularan među početnicima i stručne programeri PHP jeziku. Uobičajeni izraz jezik kao tekstualnih predložaka pojednostaviti zadatak rukovanja tekst i smanjiti broj za desetke i stotine linija. Mnogi problemi ne mogu se riješiti na sve, bez nje.

Regularni izrazi u PHP

PHP jezik ima tri mehanizme za rad sa regularnim izrazima - «ereg», «mb_ereg» i «preg». Najčešći je sučelje «preg», čija je funkcija omogućiti pristup knjižnici pCRE regularni izraz podrška, izvorno razvijen za Perl jezika, koja je uključena u PHP paketu. Preg traže funkcije u danoj tekst string podudaranje, prema određenom obrascu na jeziku regularnih izraza.

sintaksa Osnove

Kao dio kratkom članku je nemoguće detaljno opisati cijeli regularni izraz sintakse, za to postoji poseban literatura. Predstavljamo samo glavne elemente pokazati mogućnosti za developer i razumjeti primjere koda.

U PHP regularni izraz i formalno definira vrlo teško, a time pojednostavio opis. Regularni izraz tekst. Sastoji se od posvećen predložak za odvajanje i modifikatora ukazuje na način da obrađuju. Moguće uključivanje u različite alternative i ponavljanja uzoraka.

Na primjer, u izrazu / \ d {3} - \ d {2} - \ d {2} / m Razdjelnik je "/", nakon čega slijedi predloška, a simbol «m» je modifikator.

Sva moć regularnih izraza je kodiran pomoću meta-znakova. Glavni jezik metaznak je obrnuta kosa crta - „\”. Ona mijenja tip sljedeće znakove na suprotnoj (npr. E. pretvoriti u običan znakova zamjenski i obrnuto). Drugi važan metaznak je ravna crta «|», navodi alternativni predložak. Više primjeri meta-znakova:

^ Početak objekt ili niz
( Početak subpattern
) kraj subpattern
{ Početak količnik
} kraj količnik
\ d decimalni znamenkasti od 0 do 9
\ D bilo koji znak koji nije broj
\ s prazan simbol, prostor, kartica,
\ w rječnik simbola

PHP, obrade regularnih izraza, prostor smatra kao zasebna važećim znakom, pa je izraz za XYZ i ABC GDJE su različite.

subpatterns

U PHP regularni subpatterns zagradama, a oni se ponekad nazivaju „subexpressions”. Obavlja sljedeće funkcije:

  1. alternative dodjele. Na primjer, toplina uzorak (nešto | ptica |) podudara se s riječi „topline”, „Firebird” i „vruće”. I bez zagrada to će biti samo prazan niz, „ptica” i „vruće”.

  2. "Spektakularno" subpattern. To znači da ako je uzorak odgovara podniz, a zatim se vraća sve utakmice. Za jasnoću, dajemo primjer. S obzirom na sljedeći regularni izraz: pobjednik dobiva ((zlato | pozlaćen) (medalja | šalice)) - a string za utakmice „pobjednik dobiva zlatnu medalju.” Osim početne fraze, rezultati pretraživanja će biti izdana: „zlatnu medalju”, „medalje”, „zlato”.

Operatora ponavljanja (kvadrifikatory)

U sastavljanju regularni izraz je često potrebno analizirati ponavljanje brojeva i simbola. To nije problem, ako ne i puno ponavljanja. Ali što učiniti kada ne znamo njihov točan broj? U tom slučaju potrebno je koristiti posebne metaznak.

Za opis ponavljanja koriste kvadrifikatory - metaznak za određivanje broja. Kvadrifikatory su od dvije vrste:

  • čest 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 nije poznat, a drugi argument nije navedeno: x {2}.

Skraćeno quantifiers su simboli za najčešći ponavljanja kako bi se izbjeglo nepotrebno preopterećenja sintaksu. Obično postoje tri posjekotine:

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

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

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

Primjeri regex

Za one koji uče regularne izraze, primjeri - najbolji udžbenika. Dajemo nekoliko da pokažu svoje mogućnosti uz minimalan napor. Sve kod je u potpunosti kompatibilan s verzijama PHP 4.x i gore. 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 #.

Validacija e-mail adresa

Zadatak. Tu je stranica internetu na kojima se traži posjetitelj adresu e-pošte. Regularni izraz mora provjeriti ispravnost adrese prije slanja poruke. Provjerite ne jamči da će specificirano sandučić zapravo postoji i prima poruke. No, plijeviti očito pogrešne adrese može.

Odluka. Kao i kod bilo kojeg programskog jezika, u PHP regex provjeru e-adresa može se provoditi na različite načine, a primjeri u ovom članku nisu konačni i jedini izbor. Dakle, u svakom slučaju, mi ćemo dati popis uvjeta koje treba uzeti u obzir pri programiranju i specifične primjene u cijelosti ovisi o programeru.

Dakle, izraz koji testira valjanu e-mail, treba provjeriti sljedeće uvjete:

  1. Prisutnost u počevši linija @ znak, i nema praznine.
  2. Dio domena na adresu @ simbol, sadrži samo valjani znakovi za imena domena. Isto vrijedi i za imena korisnika.
  3. Prilikom provjere korisničko ime, potrebno je utvrditi prisutnost posebnih znakova kao što su apostrof ili vertikalne linije. Ti simboli su potencijalno opasni i mogu biti sadržane u takvim vrstama napada koji SQL injekcije. Izbjegavajte adrese.
  4. korisnička imena dopuštaju samo jedan bod, koji ne može biti prvi ili zadnji znak u nizu.
  5. Naziv domene mora sadržavati najmanje dva i ne više od šest znakova.

Primjer, uzimajući u obzir sve navedene uvjete mogu se vidjeti na sljedećoj slici.

Validacija URL

Zadatak. Provjerite je li naveden niz teksta je važeći URL adresa. Još jednom, napominjemo da regularni izrazi URL-provjera može se provoditi na različite načine.

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

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

Sada analizirati njegove sastavnice pobliže pomoću crteža.

zahtjev 1 Prije nego što je URL ne bi trebao imati nikakve znakove
patentnim zahtjevom 2 Provjerite prisutnost obveznih prefiks «http»
stavka 3 Ne smije biti nikakvih simbola
zahtjev 4 Ako postoji «s», URL ukazuje na sigurnu vezu «https»
zahtjev 5 Potrebna dio od „//”
zahtjevu 6 nema znakova
str. 7-9 Potvrda prvi level domena i prisutnost točke
p.10-13 Provjera domene pisanje na drugu razinu i mjesta
p.14-17

URL struktura Datoteka - skup brojeva, slova, podvlake, crtice, točkice, a kosa crta na kraju

Provjerite brojeve kreditnih kartica

Zadatak. Morate provesti validaciju unosa broja kreditne kartice od najčešćih sustava plaćanja. Varijanta samo za kartice Visa i MasterCard.

Odluka. Pri izradi izraz morate uzeti u obzir moguće postojanje praznine u ulaznoj prostoriji. Znamenke na karti su podijeljeni u skupine radi lakšeg čitanja i diktata. Dakle, prirodno je da se osoba može pokušati unijeti broj na ovaj način (tj. E. Korištenje prostora).

Napišite univerzalni izraz koji uzima u obzir moguće razmake ili crtice, je složeniji nego jednostavno odbaciti sve znakove osim znamenki. Stoga preporučamo da koristite zamjenski izraz / D, koji uklanja sve znakove osim znamenki.

Sada možete otići izravno na check broj. Sve tvrtke, izdavatelji kreditnih kartica koriste jedinstveni oblik broja. U primjeru se koristi, a klijent ne treba upisati naziv tvrtke - to je određena brojem. Visa kartice uvijek početi s brojevima 4 i imaju duljinu od 13 ili 16 znamenki. MasterCard počinje u rasponu od 51-55 s dugom brojem 16. Kao rezultat, dobili smo sljedeći izraz:

Prije obrade naloga može se dalje testirati posljednje znamenke broja, koji se izračunava na Luhn algoritam.

Provjera broj telefona

Zadatak. Provjera ispravnosti unesenog broja telefona.

Odluka. 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. No, međunarodni brojevi imaju strogu oblik i pogodno za provjeru uzorak. Čak i više, tako da se sve više i više nacionalni operateri pokušavaju zadovoljiti iste standarde. Soba struktura je kako slijedi:

+ CCC.NNNNNNNNNNxEEEE, gdje je:

- C - je kod država koja se sastoji od 1-3 znamenki.

- N - broj do 14 znamenki.

- E - opcionalno proširenje.

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

Kao rezultat toga imamo sljedeći izraz:

^ \ + [0-9] {1.3 } \ [0-9] {4,14}, (:, x +)? $

Brojevi u rasponu

Zadatak. Potrebno je osigurati koincidencije cijeli broj određenog raspona. Osim toga, potrebno je naći regularni izraz samo brojeve iz raspona.

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

Određivanje sata od 1 do 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] $
Broj od 1 do 100 * (100 |? [1-9] [0-9]) $
Dan 1-366 godine ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Traži IP-adrese

Zadatak. Potrebno je utvrditi da li je zadani string je valjana IP adresa u IPv4 formatu u rasponu od 000.000.000.000-255.255.255.255.

Odluka. Kao i kod bilo problema 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 sintaksu, koja se razlikuje od „redovite” programskim jezicima. Kako bi riješio taj problem, postoje mnoge online Testeri izraze koji olakšavaju provjeru ispravnosti predložak koji ste izradili u stvarnom tekstu. Programer unese podatke izraz i provjere i odmah vidjeti rezultat procesuiranja. Obično je predstaviti referentni sekciju, koja opisuje regularne izraze, primjeri i implementacija razlike za većinu produžen jezika.

No, u potpunosti povjerenje online usluga rezultati ne preporučuje za sve programere koji koriste PHP. Regularni izraz je napisano i provjereno osobno, podiže kvalifikacije i jamči odsutnost pogrešaka.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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