PHP (expresie regulată) - ce este? Exemple și verificarea expresiilor 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 propriilor algoritmi de verificare duce la pierderea timpului, incompatibilitatea codului programului și complexitatea dezvoltării și modernizării acestuia.

Dezvoltarea rapidă a Internetului și a limbilor de dezvoltare a WEB necesită crearea unor facilități de procesare a textelor universale și compacte, cu cantitatea minimă de cod necesară pentru acest lucru. Limba PHP nu este o excepție și este populară printre începători și dezvoltatori profesioniști. Expresia regulată ca limbă a șabloanelor de text vă permite să simplificați sarcina de procesare a textului și să reduceți codul de program la zeci și sute de linii. Multe sarcini nu pot fi rezolvate fără ea.

php expresie regulată

Expresii regulate în PHP

Limba PHP conține trei mecanisme de lucru cu expresii regulate - "ereg", "mb_ereg" și "preg". Cea mai obișnuită este interfața "preg", ale cărei funcții oferă acces la biblioteca de suport pentru expresii regulate PCRE, inițial dezvoltată pentru limba Perl, care este inclusă în pachetul PHP. Funcțiile Preg sunt căutate într-un șir de potriviri de text, conform unui anumit model în limba expresiilor regulate.

Elementele de bază ale sintaxei

exemple de expresii regulate

În cadrul unui scurt articol este imposibil să descriem în detaliu întreaga sintaxă a expresiilor regulate, în acest scop există o literatură specială. Iată doar elementele de bază pentru a arăta o gamă largă de posibilități pentru dezvoltator și pentru a înțelege exemplele de cod.

În PHP, o expresie regulată este definită formal foarte dificilă și, prin urmare, simplificăm descrierea. O expresie regulată este un șir de text. Se compune dintr-un șablon delimitat și un modifiant care indică cum să se ocupe. Este posibil să includeți diferite alternative și repetiții în șabloane.

De exemplu, în expresie / d {3} - d {2} - d {2} / m separatorul va fi "/", apoi șablonul merge și simbolul «M» va fi un modificator.

Toată puterea expresiilor regulate este codificată cu metacaractere. Principalul metacaracter al limbajului este întârzierea - "". Schimbă tipul personajului care o urmează și celui opus (adică caracterul obișnuit se transformă într-un metacaracter și invers). Un alt metacaracter important este linia directă "|", care specifică variante alternative ale șablonului. Mai multe exemple de metacaractere:

^Începutul unui obiect sau șir
(Începutul subordonatului
)Sfârșitul subpunctului
{Originea cuantificatorului
}Sfârșitul cuantificatorului
dzecimal de la 0 la 9
Dorice caracter care nu este o cifră
scaractere goale, spațiu, fila
wcaracterul dicționarului

PHP, procesând expresii regulate, consideră un spațiu ca un simbol semnificativ separat, astfel încât expresiile ABCDEF și ABC WHERE sunt diferite.

subpatterns

În PHP, parantezele regulate sunt alocate în paranteze și sunt uneori numite "subexpresii". Efectuați următoarele funcții:

  1. Alocarea de alternative. De exemplu, febră (ceva | Bird |) coincide cu cuvintele "Căldura", "focul de foc" și «Hot». Și fără brackets, acesta va fi doar un șir gol, "pasăre" și "friptura".

  2. Subpunctul "excitant". Acest lucru înseamnă că, dacă subdistrul se potrivește în șablon, atunci toate potrivirile sunt returnate ca rezultat. Pentru claritate, oferim un exemplu. Următoarea expresie regulată este dată: câștigătorul primește ((aur | aurit) (medal | cup)) - și un șir pentru a căuta potriviri: "Câștigătorul primește o medalie de aur". În plus față de fraza originală, rezultatul căutării va fi: "Medalia de aur", "Medalia", "aurul".

Operatorii de repetiții (quadrifiers)

Atunci când se creează expresii regulate, este adesea necesar să se analizeze repetarea numerelor și simbolurilor. Aceasta nu este o problemă dacă nu există prea multe repetări. Dar dacă nu știm numărul lor exact? În acest caz, trebuie să utilizați metacaracte speciale.

Pentru descrierea repetițiilor se utilizează quadrici - metacaractere pentru specificarea numărului. Quadrices sunt de două tipuri:

  • general, închis în paranteze;
  • redusă.

Cuantificatorul total este atins de numărul minim și maxim de repetări permise ale elementului sub forma a două numere în paranteze curbate, de exemplu: x {2,5}. Dacă numărul maxim de repetiții nu este cunoscut, al doilea argument nu este specificat: x {2,}.

Redresoarele cuantificate sunt simboluri pentru cele mai frecvente repetări pentru a evita supraîncărcarea inutilă a sintaxei. Trei abrevieri sunt de obicei folosite:

1. * - zero și mai multe repetări, care este echivalentă cu {0,}.

2. + una sau mai multe repetări, adică {1,}.

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

Exemple de expresii regulate

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 #.

Verificarea corectitudinii adresei de e-mail

Sarcina. Există o pagină de Internet unde este solicitată o adresă de e-mail de la vizitator. O expresie regulată trebuie să verifice corectitudinea adresei primite înainte de a trimite mesaje. Verificarea nu garantează faptul că cutia poștală specificată există și acceptă scrisori. Dar este posibil să eliminați adrese greșite în mod deliberat.

Soluția. Ca în orice limbaj de programare, expresiile regulate ale verificării adresei de e-mail în PHP pot fi implementate în PHP în diferite moduri, iar exemplele din acest articol nu sunt singura opțiune finală și singură. Prin urmare, în fiecare caz, vom enumera cerințele care trebuie luate în considerare în programare, iar implementarea specifică depinde în întregime de dezvoltator.

Deci, expresia care verifică validitatea e-mailului ar trebui să verifice următoarele condiții:

  1. Prezența simbolului @ în șirul sursă și absența spațiilor.
  2. Partea de domeniu a adresei, în afara simbolului @, conține numai caractere valide pentru numele de domeniu. Același lucru este valabil și pentru numele de utilizator.
  3. Când verificați numele de utilizator, trebuie să determinați dacă există caractere speciale, cum ar fi un apostrof sau linie verticală. Aceste simboluri sunt potențial periculoase și pot fi conținute în atacuri, cum ar fi injecțiile SQL. Evitați aceste adrese.
  4. Numele de utilizator permit un singur punct, care nu poate fi primul sau ultimul caracter din șir.
  5. Numele de domeniu trebuie să conțină cel puțin două și cel mult șase caractere.

Un exemplu care ia în considerare toate aceste condiții poate fi văzut în figura de mai jos.

php emails regulat expresii

Validarea adreselor URL

Sarcina. Verificați dacă șirul de text specificat este valabil adresă URL. Încă o dată, expresiile URL obișnuite pot fi implementate în mai multe moduri.

Soluția. Versiunea noastră finală este următoarea:



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

Acum, să analizăm mai detaliat componentele sale folosind figura.

expresii regulate url

punctul 1Înainte de adresa URL nu pot fi caractere
punctul 2Verificăm prefixul obligatoriu "http"
punctul 3Nu trebuie să conțină caractere
punctul 4Dacă există un "s", atunci URL-ul indică o conexiune securizată "https"
punctul 5Necesar "//"
punctul 6Nu există caractere
pct. 7-9validare domeniu al primului nivel și prezența unui punct
p.10-13Controlul corectitudinii scrierii unui domeniu și a unui al doilea nivel
Punctul 14-17

Structura fișierului URL este un set de numere, litere, sublințiri, cratime, puncte și tăieturi la sfârșit

Verificarea numerelor cărților de credit

Sarcina. Este necesar să se verifice corectitudinea numărului de card plastic introdus al celor mai comune sisteme de plată. O variantă este considerată numai pentru hărți Visa și MasterCard.

Soluția. Când creați o expresie, trebuie să țineți cont de posibila prezență de spații în numărul introdus. Numerele de pe hartă sunt împărțite în grupuri pentru citirea și dictarea ușoară. Prin urmare, este destul de natural ca o persoană să poată încerca să introducă un număr în acest fel (adică folosind spații).

Scrieți o expresie universală care ține cont de posibilele spații și cratime este mai greu decât să renunțe la toate caracterele, cu excepția cifrelor. Prin urmare, în expresie, se recomandă utilizarea metacaracterului / D, care șterge toate caracterele, cu excepția cifrelor.

Acum puteți merge direct la verificarea numărului. Toate companiile care emit carduri de credit utilizează un format unic de numere. În exemplu, acest lucru este folosit, iar clientul nu trebuie să introducă numele companiei - este determinat de număr. Cardurile de viză încep întotdeauna cu 4 și au o lungime de 13 sau 16 cifre. MasterCard începe în intervalul 51-55 cu lungimea numărului 16. Ca rezultat, obținem următoarea expresie:

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

Verificarea numerelor de telefon

Sarcina. Verificarea corectitudinii numărului de telefon introdus.

Soluția. Numărul de cifre din numerele de telefon fix și mobil variază considerabil în funcție de țară, deci este universal să verificați folosind o expresie regulată, numărul de telefon nu poate fi corect. Dar numerele internaționale au un format strict și sunt excelente pentru verificarea prin șablon. Mai mult, tot mai mulți operatori de telefonie naționali încearcă să se conformeze unui singur standard. Structura numărului este următoarea:

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

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

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

- E este o extensie opțională.

Plus este un element indispensabil, iar semnul lui x este prezent doar dacă este necesară extinderea.

Ca rezultat, avem următoarea expresie:

^ [0-9] {1,3} [0-9] {4,14} (a: x +)

Numerele din interval

Sarcina. Este necesar să se asigure că un număr întreg corespunde unui anumit interval. În plus, este necesar ca expresiile regulate să fie găsite numai din intervalul de valori.

Soluția. Iată câteva expresii pentru câteva dintre cele mai frecvente cazuri:

Determinați ora de la 1 la 24^ (1 [0-2] | [1-9]) $
Zi în lunile 1-31^ (3 [01] | [12] [0-9] | [1-9]) $
Al doilea sau minut 0-59^ [1-5]? [0-9] $
Numărul de la 1 la 100^ (100 | [1-9] y [0-9])
Ziua Anului 1-366^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Căutați o adresă IP

Sarcina. 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.

Soluția. Ca în orice sarcină din PHP, expresia regulată are multe variante. De exemplu, aceasta:

spațiul de exprimare regulată

Testarea online a expresiilor

e-mail expresie regulată

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 expresia și datele pentru verificare și vede imediat rezultatul procesă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 încrederea pe deplin în rezultatele serviciilor online nu este recomandată tuturor dezvoltatorilor care folosesc PHP. O expresie regulată, scrisă și verificată în persoană, mărește calificarea și garantează absența erorilor.

Distribuiți pe rețelele sociale:

înrudit
Verificarea textelor pentru erori: cele mai bune programe, recomandăriVerificarea textelor pentru erori: cele mai bune programe, recomandări
Ce tipuri de editare a textului pot fi împărțite?Ce tipuri de editare a textului pot fi împărțite?
Lista limbajelor de programare. Limbi de programare de nivel scăzut și înaltLista limbajelor de programare. Limbi de programare de nivel scăzut și înalt
Java: expresii regulate, caractere specialeJava: expresii regulate, caractere speciale
jаvascript, expresie regulată: exemple, verificarea expresiilor regulatejаvascript, expresie regulată: exemple, verificarea expresiilor regulate
Expresii regulate (PHP). PHP: expresii regulate, exempleExpresii regulate (PHP). PHP: expresii regulate, exemple
PHP: expresii regulate, funcția preg Match allPHP: expresii regulate, funcția preg Match all
Operatorul de atribuire în "Pascal": ce se intenționează, ce acțiuni sunt efectuateOperatorul de atribuire în "Pascal": ce se intenționează, ce acțiuni sunt efectuate
Scripting limbi de programare: sarcini, caracteristici și beneficiiScripting limbi de programare: sarcini, caracteristici și beneficii
Unicitatea este valoarea exprimată în procente, determinată de motoarele de căutare utilizând…Unicitatea este valoarea exprimată în procente, determinată de motoarele de căutare utilizând…
» » PHP (expresie regulată) - ce este? Exemple și verificarea expresiilor regulate