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.
conținut
- Expresii regulate în php
- Elementele de bază ale sintaxei
- Subpatterns
- Operatorii de repetiții (quadrifiers)
- Exemple de expresii regulate
- Verificarea corectitudinii adresei de e-mail
- Validarea adreselor url
- Verificarea numerelor cărților de credit
- Verificarea numerelor de telefon
- Numerele din interval
- Căutați o adresă ip
- Testarea online a expresiilor
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.
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
Î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 |
d | zecimal de la 0 la 9 |
D | orice caracter care nu este o cifră |
s | caractere goale, spațiu, fila |
w | caracterul 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:
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".
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:
- Prezența simbolului @ în șirul sursă și absența spațiilor.
- 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.
- 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.
- Numele de utilizator permit un singur punct, care nu poate fi primul sau ultimul caracter din șir.
- 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.
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.
punctul 1 | Înainte de adresa URL nu pot fi caractere |
punctul 2 | Verificăm prefixul obligatoriu "http" |
punctul 3 | Nu trebuie să conțină caractere |
punctul 4 | Dacă există un "s", atunci URL-ul indică o conexiune securizată "https" |
punctul 5 | Necesar "//" |
punctul 6 | Nu există caractere |
pct. 7-9 | validare domeniu al primului nivel și prezența unui punct |
p.10-13 | Controlul 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:
Testarea 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 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.
- Programare structurată
- Verificarea textelor pentru erori: cele mai bune programe, recomandări
- Ce tipuri de editare a textului pot fi împărțite?
- Lista limbajelor de programare. Limbi de programare de nivel scăzut și înalt
- Java: expresii regulate, caractere speciale
- jаvascript, expresie regulată: exemple, verificarea expresiilor regulate
- Expresii regulate (PHP). PHP: expresii regulate, exemple
- PHP: expresii regulate, funcția preg Match all
- Operatorul de atribuire în "Pascal": ce se intenționează, ce acțiuni sunt efectuate
- Scripting limbi de programare: sarcini, caracteristici și beneficii
- Unicitatea este valoarea exprimată în procente, determinată de motoarele de căutare utilizând…
- Software de aplicație, clasificare
- Mediul de programare. Pe drumul spre crearea propriului software
- Verificarea este procesul de verificare a unui produs software
- Care este codul programului, aplicația, erorile
- Program pentru crearea de documente text: ce este și ce fel de editori puteți găsi?
- Expresii regulate ale Notepad: descriere, înlocuire și exemple
- Str.replace: exemple de utilizare eficientă
- Trebuie să salvați conținutul? Comandați rescrie textul
- Cel mai ușor limbaj de programare pentru începători
- Cum se scrie un program în Notepad