Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

Subșabloane Condiționale în RegEx ((?(condition)yes|no)) în Expresii Regulare (RegEx)

Ghid complet pentru instrucțiuni logice IF-THEN-ELSE în expresii regulate: validarea parantezelor pereche și adaptarea dinamică a șablonului pe baza grupurilor capturate anterior.

Tipar RegEx
^(\()?\d{3}(?(1)\)|-)\d{7}$

În multe cazuri de validare din lumea reală, prezența unui caracter impune obligativitatea altui caracter mai târziu în șir. De exemplu, un număr de telefon poate fi scris fie cu prefixul între paranteze (0722)123456, fie fără paranteze 0722-123456, dar nu cu o singură paranteză deschisă (0722-123456. Subșabloanele Condiționale permit scrierea de logică decizională direct în RegEx.

Sintaxa generală IF-THEN-ELSE în RegEx
(?(condiție)șablon-dacă-adevărat|șablon-dacă-fals)
// Condiția poate fi:
// 1. Un număr de grup de captură: (?(1)...) -> Verifică dacă grupul 1 a participat la potrivire!
// 2. Un nume de grup: (?()...)
// 3. O aserțiune lookaround: (?(?=[a-z])...)
Validarea parantezelor pereche pentru prefixe telefonice
^ (\()? \d{4} (?(1)\)|-) \d{6} $

// Cum se evaluează:
// 1. (\()? -> Grupul 1 capturează opțional paranteza deschisă '('.
// 2. \d{4} -> Urmează 4 cifre de prefix (ex: 0722).
// 3. (?(1)\)|-) -> CONDIȚIA:
//    - DACĂ grupul 1 a fost capturat (adică a existat '(' la început):
//      ATUNCI trebuie să urmeze obligatoriu paranteza închisă ')'!
//    - ALTFEL (nu a existat paranteză la început):
//      ATUNCI trebuie să urmeze o cratimă '-'!
// 4. \d{6} -> Urmează restul de 6 cifre.

// Rezultate:
// "(0722)123456" -> VALID!
// "0722-123456"  -> VALID!
// "(0722-123456" -> RESPINS AUTOMAT! (lipsește paranteza pereche)

Condiție Bazată pe Lookaround

Dacă nu doriți să folosiți un grup de captură, condiția poate fi o verificare directă prin lookaround:

^(?(?=[A-Z])\w{10}|\d{5})$
# Dacă primul caracter este o majusculă, textul trebuie să fie un cod alfanumeric de 10 caractere;
# Altfel, trebuie să fie un cod numeric de 5 cifre!
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Subșabloane Condiționale în RegEx ((?(condition)yes|no))

Ai o nelămurire despre utilizarea comenzii Subșabloane Condiționale în RegEx ((?(condition)yes|no)) 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.