Rețetă RegEx: Parolă puternică, cod poștal și IP în Expresii Regulare (RegEx)

Rețete practice și utilizare în limbaje PCRE / ECMAScript / Python

Expresii regulare pentru verificarea complexității unei parole (cu lookahead), a codurilor poștale de 6 cifre și a adreselor IPv4.

Tipar RegEx
/^(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*[W_]).{8,}$/

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 \w include caracterul underscore (_), negația sa \W nu î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