Aserțiuni Lookaround Avansate: Validări Multiple și Lookbehind Variabil în Expresii Regulare (RegEx)

Ghid complet pentru aserțiuni Lookaround de lățime zero: rețeta de validare a parolelor complexe, lookbehind pozitiv și negativ și noile capabilități de lungime variabilă în PCRE2 și JavaScript V8.

Tipar RegEx
^(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Aserțiunile Lookaround (Lookahead și Lookbehind) sunt adesea numite „super-puterea secretă” a expresiilor regulate. Ele testează condiții booleene asupra textului adiacent poziției curente a cursorului fără a consuma caractere. După ce un lookaround s-a potrivit cu succes, cursorul de citire al motorului rămâne exact în aceeași poziție ca înainte de test!

Rețeta Universală de Producție: Validarea Parolelor Puternice
^ (?=.*[a-z]) (?=.*[A-Z]) (?=.*\d) (?=.*[@$!%*?&]) [A-Za-z\d@$!%*?&]{8,32} $

// Cum funcționează combinarea de Positive Lookaheads la începutul șirului (^):
// 1. ^ -> Cursorul se află la începutul textului.
// 2. (?=.*[a-z]) -> Verifică dacă există cel puțin o literă mică. Cursorul rămâne la start!
// 3. (?=.*[A-Z]) -> Verifică dacă există cel puțin o literă mare. Cursorul rămâne la start!
// 4. (?=.*\d)     -> Verifică dacă există cel puțin o cifră. Cursorul rămâne la start!
// 5. (?=.*[@$!%*?&]) -> Verifică dacă există cel puțin un caracter special.
// 6. [A-Za-z\d@$!%*?&]{8,32} -> CONSUMĂ efectiv textul și verifică lungimea între 8 și 32 caractere!

Lookbehind cu Lungime Fixă vs. Variabilă

Istoric, motoarele de expresii regulate impuneau ca șablonul din interiorul unui Lookbehind ((?<=...)) să aibă o lungime fixă și cunoscută la compilare (de exemplu (?<=https) sau (?<=abc), dar nu (?<=\d+)). În prezent:

  • JavaScript V8 (Chrome, Node.js): Suportă lookbehind cu lungime variabilă începând cu ES2018 (inclusiv cuantificatori + și *).
  • PCRE2 (PHP 7.4+): Suportă lungime variabilă dacă există o limită maximă definită.
  • Python (modulul re): Impune în continuare lungime fixă; pentru lungime variabilă în Python se folosește biblioteca regex.
Extragerea prețurilor fără moneda adiacentă
// Găsește orice sumă precedată de "RON " sau "EUR ":
(?<=RON\s|EUR\s)\d+(?:\.\d{2})?

// Text: "Factura este de RON 450.00 achitată ieri."
// Rezultat extras: "450.00" (prefixul 'RON ' nu este inclus în rezultat!)
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Aserțiuni Lookaround Avansate: Validări Multiple și Lookbehind Variabil

Ai o nelămurire despre utilizarea comenzii Aserțiuni Lookaround Avansate: Validări Multiple și Lookbehind Variabil sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.