CalculatoareProgramare

PHP (regex) - ce este? Exemple și verificarea expresii regulate

Atunci când se lucrează cu text în orice limbaj de programare moderne, dezvoltatorii întâlni în mod constant cu obiectivele de validare a datelor introduse pentru conformitatea cu modelul dorit, de căutare și înlocuiți fragmente de testare și alte tipuri de operațiuni de prelucrare a informațiilor caracter. Dezvoltarea propriile algoritmi de validare duce la pierderea de timp, compatibilitatea codului și complexitatea în dezvoltarea și modernizarea acesteia.

Dezvoltarea rapidă a internetului și a web-design limbile necesară crearea de mijloace versatile și compacte de procesare de text, cu o valoare minimă necesară pentru acest cod. Aceasta nu este o excepție și este popular printre începători și dezvoltatorii profesioniști de limbaj PHP. Limba expresie regulată ca șabloanele de text pentru a simplifica sarcina de manipulare a textului și pentru a reduce codul pentru zeci și sute de linii. Multe probleme nu pot fi rezolvate la toate fără ea.

Expresii regulate în PHP

limbajul PHP are trei mecanisme de lucru cu expresii regulate - «ereg», «mb_ereg» și «PREG». Cele mai frecvente este interfața «PREG», ale căror funcții oferă acces la biblioteca suportului de expresie regulată a PCRE, dezvoltat inițial pentru limba Perl, care este inclus în pachetul PHP. Preg-caută funcții într-un șir de potrivire text dat, în conformitate cu un anumit model în limbajul de expresii regulate.

Elementele de bază de sintaxă

Ca parte a unui articol scurt, este imposibil să se descrie în detaliu întreaga sintaxa expresie regulată, pentru aceasta există o literatură specială. Prezentăm doar principalele elemente pentru a arăta oportunități pentru dezvoltator și să înțeleagă exemple de cod.

În PHP expresie regulată este definită în mod formal foarte dificil, și, prin urmare, simplificarea descrierii. O expresie regulată este un șir de text. Se compune dintr-un șablon separator dedicat și modificator care indică modul în care să-l ocupe. Posibila includere în diferitele variante și repetiții ale modelelor.

De exemplu, în expresie / \ d {3} - {2} \ d - \ d {2} / m compas este "/", urmat de șablon, iar simbolul «m» este modificatorul.

Toată puterea de expresii regulate este codată folosind meta-caractere. Principala metacaractere limba este backslash - „\“. Se schimbă tipul de următoarele caractere pe partea opusă (de ex., E. Transformată într-un wildcard personaj obișnuit și vice-versa). Un alt metacaractere important este o linie dreaptă «|», specifică șablonul alternativ. Mai multe exemple de meta-caractere:

^ Start obiect sau un șir de caractere
( Start subpattern
) Sfârșit subpattern
{ Start cuantificator
} Sfârșit cuantificator
\ d cifră zecimală la 0 la 9
\ D orice caracter care nu este un număr
\ s simbol gol, spațiu, tab,
\ w simbol dicționar

PHP, procesarea expresii regulate, spațiu considerat ca un caracter valid separat, astfel încât expresia XYZ și ABC cazul în care sunt diferite.

subpatterns

În PHP subpatterns regulate de paranteze, iar acestea sunt numite uneori „subexpressions“. Realizați următoarele funcții:

  1. alternative de alocare. De exemplu, modelul de căldură (ceva | Bird |) coincide cu cuvintele „căldură“, „Pasarea de foc“ și „fierbinte“. Și fără paranteze va fi doar un șir gol, „pasăre“ și „fierbinte“.

  2. subpattern "spectaculos". Acest lucru înseamnă că, în cazul în care modelul de potrivire subșir, apoi se întoarce toate meciurile. Pentru claritate, vom da un exemplu. Având în vedere următoarea expresie regulată: câștigătorul primește ((aur | placat cu aur) (medalie | cupa)) - și șirul de meciuri, „câștigătorul primește o medalie de aur.“ În plus față de fraza inițială, rezultatele căutării vor fi emise: „Medalia de aur“, „medalii“, „aur“.

Operatorii repetări (kvadrifikatory)

În compilarea expresia regulată este adesea necesară pentru a analiza repetarea numerelor și a simbolurilor. Aceasta nu este o problemă, în cazul în care nu o mulțime de repetiții. Dar ce să facă atunci când nu știm numărul exact al acestora? În acest caz, este necesar să se utilizeze metacaracterele speciale.

Pentru o descriere a repetări folosite kvadrifikatory - metacaractere pentru a specifica numărul. Kvadrifikatory sunt de două tipuri:

  • comune între paranteze;
  • redusă.

cuantificator global atins de numărul minim și maxim al elementului repetări permis sub forma a două numere în paranteze, cum ar fi x {2,5}. Dacă numărul maxim de repetiții nu este cunoscut, al doilea argument nu este specificat: x {2}.

cuantificatorii abreviate sunt simboluri pentru cele mai comune de repetiții pentru a evita inutile sintaxa supraîncărcării. De obicei, există trei bucăți:

1. * - zero sau mai multe repetiții, ceea ce este echivalent cu {0,}.

2. + - una sau mai multe repetiții, adică {1} ...

3.? - zero sau doar o singură repetare - {0,1}.

Exemplele regex

Pentru cei care învață expresii regulate, exemple - cel mai bun manual. Dăm câteva care arată oportunitățile lor cu un minim de efort. Toate cod este pe deplin compatibil cu versiunile PHP 4.x și de mai sus. Pentru a înțelege pe deplin sintaxa și utilizarea toate caracteristicile lingvistice, vă recomandăm cartea de J .. Friedl, „expresii regulate“, care a considerat pe deplin sintaxă, și există exemple de expresii regulate, nu numai PHP, dar, de asemenea, pentru un Python, Perl, MySQL, Java, Ruby, și C #.

Validarea E-mail

Sarcină. Există o pagină de Internet pe care se solicită vizitatorului adresa de e-mail. Expresia regulată trebuie să verifice corectitudinea adreselor înainte de a trimite mesaje. Verificarea nu garantează că cutia poștală specificată există în mod real și primește mesaje. Dar índepărta adrese în mod evident greșit se poate.

Decizie. Ca și în orice limbaj de programare, în PHP de verificare regex de e-mail-adresă poate fi pusă în aplicare în moduri diferite, și exemplele din acest articol nu sunt alegerea finală și numai. Prin urmare, în fiecare caz, vom furniza o listă de cerințe care trebuie să fie luate în considerare atunci când programarea și punerea în aplicare specifică depinde în întregime de dezvoltator.

Astfel, expresia care testează un e-mail validă, trebuie să verificați următoarele condiții:

  1. Prezența în linia de start simbolul @, și nu există lacune.
  2. Partea de domeniu a adresei simbolului @, conține numai caractere valide pentru numele de domeniu. Același lucru este valabil pentru numele utilizatorului.
  3. La verificarea numelui de utilizator este necesară pentru a determina prezența unor caractere speciale, cum ar fi un apostrof sau o linie verticală. Aceste simboluri sunt potențial periculoase și pot fi conținute în astfel de tipuri de atacuri care SQL-injectare. Evitați adrese.
  4. Numele de utilizator permite un singur punct, care nu poate fi primul sau ultimul caracter din șirul.
  5. Numele de domeniu trebuie să conțină cel puțin două și nu mai mult de șase caractere.

De exemplu, luând în considerare toate aceste condiții pot fi văzute în figura următoare.

Validarea unei adrese URL

Sarcină. Verificați dacă șirul de text specificat este valid URL adresă. Încă o dată, observăm că expresii regulate URL verificare pot fi implementate în diverse moduri.

Decizie. Versiunea noastră finală este după cum urmează:

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

Acum analizează componentele mai în detaliu cu ajutorul desenului.

conform revendicării 1, Înainte de URL-ul nu ar trebui să aibă nici un caracter
revendicarea 2 Verificați prezența prefixului obligatorii «http»
punctul 3 Nu trebuie să existe simboluri
revendicarea 4 Dacă există «s», adresa URL indică o conexiune securizată «https»
revendicarea 5 parte necesară a „//“
revendicarea 6 Nu există caractere
p. 7-9 Verificarea primul domeniu de nivel și prezența punctului
p.10-13 Verificarea domeniului de scriere al doilea nivel și punctul
p.14-17

Structura URL fișier - un set de numere, litere, subliniere, cratime, puncte, și un slash la sfârșitul anului

Verificați numerele de card de credit

Sarcină. Ai nevoie să pună în aplicare validarea numărului de card de credit a intrat sistemelor de plăți cele mai comune. O variantă numai pentru cardurile Visa și MasterCard.

Decizie. La crearea expresiei trebuie să ia în considerare eventuala prezență a unor lacune în camera de intrare. Cifrele de pe hartă sunt împărțite în grupuri pentru facilitarea citirii și dictare. Prin urmare, este firesc ca o persoană poate încerca să introduceți un număr în acest fel (de ex., E. Utilizarea spații).

Scrieți o expresie universală care ia în considerare posibilele spații sau cratime, este mai complicat decât pur și simplu renunța la toate caracterele cu excepția cifre. Prin urmare, vă recomandăm să folosiți o expresie wildcard / D, care elimină toate caracterele cu excepția cifre.

Acum puteți merge direct la numărul de verificare. Toate companiile, emitenții de carduri de credit folosesc un format de număr unic. În exemplul acesta este utilizat, iar clientul nu are nevoie pentru a introduce numele companiei - este determinată de numărul. carduri Visa începe întotdeauna cu numerele 4 și au o lungime de 13 sau 16 cifre. MasterCard începe în intervalul 51-55, cu un număr lung 16. Ca rezultat, vom obține următoarea expresie:

Înainte de procesarea comenzii poate fi testată în continuare ultimele cifre ale numărului, care se calculează pe algoritmul Luhn.

Numărul de telefon Verificarea

Sarcină. Verificarea corectitudinii numărului de telefon introdus.

Decizie. Numărul de cifre din numerele de telefonie fixă și mobilă variază considerabil în funcție de țară, astfel încât în mod universal verifica folosind expresii regulate, numărul de telefon corect imposibil. Dar, numere internaționale au un format strict și perfect pentru verificarea modelului. Chiar mai astfel încât operatorii tot mai multe naționale de telefonie încearcă să îndeplinească același standard. Structura Sala este după cum urmează:

+ CCC.NNNNNNNNNNxEEEE, în cazul în care:

- C - este codul de țară format din 1-3 cifre.

- N - număr de până la 14 cifre.

- E - extensie opțională.

Plus este un element indispensabil, iar semnul X este prezent numai atunci când este nevoie de prelungire.

Ca urmare, avem următoarea expresie:

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

Numerele din gama

Sarcină. Este necesar să se asigure o coincidență întreagă a unui anumit interval. În plus, este necesar să se găsească o expresie regulată numai numerele din gama.

Decizie. Iată câteva expresii pentru unele dintre cele mai frecvente cazuri:

Se determină ora la 1 la 24 ^ (1 [0-2] | [1-9]) $
Ziua în luna 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Secunde sau minute 0-59 ^ [1-5]? [0-9] $
Un număr de la 1 la 100 * (100 |? [1-9] [0-9]) $
Ziua anului 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Cauta adrese IP

Sarcină. Este necesar să se determine dacă un anumit șir de caractere este o adresă IP validă în format IPv4 în intervalul de la 000.000.000.000-255.255.255.255.

Decizie. Ca și în orice problemă în limbajul PHP, expresia regulată are multe varintov. De exemplu, acest lucru:

verificarea online a expresiilor

Verificați regex corect pentru începători poate fi dificilă din cauza complexității sintaxei, care diferă de limbaje de programare „obișnuite“. Pentru a rezolva această problemă, există mai multe testere online, expresii care fac ușor pentru a verifica corectitudinea șablonului creat în text reală. Programatorul introduce datele de expresie și de verificare și vedea imediat rezultatul prelucrării. De obicei, există prezintă o secțiune de referință, care detaliază expresiile regulate, exemple și diferențele de punere în aplicare pentru limbile cele mai extinse.

Dar pentru servicii online deplină încredere rezultate nu este recomandat pentru toți dezvoltatorii care folosesc PHP. O expresie regulată este scrisă și verificată în persoană, ridică calificarea și să garanteze absența erorilor.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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