Ce face Rețetă RegEx: Parolă puternică, cod poștal și IP
Deoarece ordinea caracterelor dintr-o parolă este liberă (cifra poate fi la început, la mijloc sau la sfârșit), validarea unei parole puternice într-o singură expresie regulară se bazează pe înlănțuirea mai multor aserțiuni Positive Lookahead (?=...) imediat după ancora ^.
Fiecare lookahead pornește de la începutul șirului și verifică independent câte o cerință (existența unei litere mici, a unei majuscule, a unei cifre și a unui simbol special), iar la final .{8,} validează lungimea minimă. În această pagină găsești și rețetele exacte pentru codul poștal românesc și adresele IPv4.
Variante și sintaxă asociată
| Expresie / Simbol | Descriere |
|---|---|
(?=.*[a-z]) |
Lookahead 1: verifică prezența a cel puțin unei litere mici oriunde în parolă. |
(?=.*[A-Z]) |
Lookahead 2: verifică prezența a cel puțin unei litere MARI oriunde în parolă. |
(?=.*\d) |
Lookahead 3: verifică prezența a cel puțin unei cifre (0-9). |
(?=.*[\W_]) |
Lookahead 4: verifică prezența unui caracter special (inclusiv underscore _). |
.{8,64}$ |
Consumă efectiv șirul și impune lungimea între 8 și 64 de caractere. |
(?:25[0-5]|2[0-4]\d|[01]?\d\d?) |
Subexpresie care validează un octet IPv4 strict în intervalul numeric 0 – 255. |
Exemple
Exemplul 1: Validarea unei parole puternice (minim 8 caractere, literă mică, mare, cifră, simbol)
Toate cele 4 condiții sunt evaluate de la începutul șirului (^) înainte ca .{8,}$ să verifice lungimea.
Expresie: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/
Teste:
"Parola123!" -> VALID (10 caractere, are a-z, A-Z, cifră și !)
"parola123!" -> INVALID (lipsește majuscula)
"Parola123" -> INVALID (lipsește caracterul special)
"Pa1!" -> INVALID (doar 4 caractere, sub minimul de 8)
Potriviri găsite (Matches)
Doar "Parola123!" trece de toate cele 4 aserțiuni lookahead și de pragul .{8,}.
Exemplul 2: Validarea unui cod poștal din România (6 cifre) și a unei adrese IPv4 (0-255)
Pentru IPv4, nu este suficient \d{1,3} (care ar accepta 999.999.999.999); limităm fiecare octet la 0–255.
// Cod poștal România (6 cifre, primul digit 0-9):
$reCodPostal = '/^[0-9]{6}$/';
// Adresă IPv4 validă (fiecare dintre cei 4 octeți este între 0 și 255):
$reIPv4 = '/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/';
Potriviri găsite (Matches)
Cod poștal "010101" -> VALID
IPv4 "192.168.1.254" -> VALID
IPv4 "256.100.0.1" -> INVALID (256 depășește 255)
Greșeli frecvente
- Folosirea lui
(?=.*[\W])fără_pentru caracterul special al parolei: deoarece\winclude caracterul underscore (_), negația sa\Wnu îl consideră caracter special! Scrie mereu[\W_]sau[^a-zA-Z0-9]pentru ca_să fie acceptat ca simbol. - Restricționarea caracterelor permise la finalul expresiei de parolă (ex.
[a-zA-Z0-9!@#$%]{8,}$în loc de.{8,}$sau\S{8,}$), ceea ce îi împiedică pe utilizatori să folosească alte simboluri de pe tastatură (precum^,&,*,-,.).
Simboluri și rețete înrudite
(?=...) și (?!...) (Positive / Negative Lookahead): Verifică dacă poziția curentă este urmată (?=…) sau NU este urmată (?!…) de un anumit șablon, fără a consuma caracterele.Rețetă RegEx: Telefon RO, CNP și IBAN: Șabloane RegEx adaptate pentru România: numere de telefon mobil/fix (+40 / 07xx), Cod Numeric Personal (CNP) și conturi IBAN RO.{n}, {n,} și {n,m} (număr exact de repetiții): Controlează precis de câte ori trebuie să se repete un caracter sau un grup: exact n, minim n sau între n și m ori.^ și $ (început și sfârșit de șir / linie): Ancorează potrivirea la începutul (^) și/sau la sfârșitul ($) șirului de text sau al fiecărui rând.