[abc] și [a-z0-9] (seturi și intervale) în Expresii Regulare (RegEx)

Clase de caractere PCRE / ECMAScript / POSIX

Definește o clasă personalizată de caractere din care se potrivește un singur caracter.

Tipar RegEx
[aeiou]   |   [a-zA-Z0-9]   |   [0-9a-fA-F]

Ce face [abc] și [a-z0-9] (seturi și intervale)

Parantezele drepte [...] definesc un set de caractere (character class): expresia va potrivi un singur caracter din text, cu condiția ca acesta să se regăsească printre opțiunile listate în interiorul parantezelor. De exemplu, gr[ae]y potrivește atât gray, cât și grey.

În interiorul parantezelor drepte poți folosi cratima (-) pentru a defini intervale pe baza codului ASCII/Unicode: [a-z] pentru litere mici, [A-Z] pentru majuscule, [0-9] pentru cifre. Majoritatea metacaracterelor (precum ., +, *, ?, (, )) își pierd sensul special în interiorul [...] și devin caractere literale.

Variante și sintaxă asociată

Expresie / Simbol Descriere
[abc] Potrivește un singur caracter: fie a, fie b, fie c.
[a-z] Orice literă mică din alfabetul englez (de la a la z).
[a-zA-Z0-9] Orice literă (mică sau mare) sau cifră (alfanumeric ASCII).
[0-9a-fA-F] O cifră hexazecimală (utilă pentru culori CSS #FF5733 sau adrese MAC).
[a-zăîâșț] Litere mici inclusiv diacriticele românești (necesită flag-ul /u în PCRE/JS).
[-a-z] sau [a-z-] Cratima pusă chiar la început sau la sfârșit (ori escapată \-) este tratată ca minus literal.

Exemple

Exemplul 1: Validarea unei culori hexazecimale CSS (#RRGGBB)

Folosim intervalul [0-9a-fA-F] repetat de exact 6 ori după simbolul #.

Expresie: /#[0-9a-fA-F]{6}\b/g
Text:     "Culori valide: #1a2b3c, #FF9900. Invalide: #12345g, #abc."

Potriviri găsite (Matches)

Match 1: "#1a2b3c"
Match 2: "#FF9900"

Exemplul 2: Potrivirea vocalelor din limba română

Definim un set cu toate vocalele românești și folosim flag-ul i (case-insensitive).

Expresie: /[aeiouăîâ]/gi
Text:     "România"

Potriviri găsite (Matches)

Match 1: "o"
Match 2: "â"
Match 3: "i"
Match 4: "a"

Greșeli frecvente

  • Confuzia între [abc] (un singur caracter dintre a, b sau c) și (abc) (secvența exactă de 3 caractere abc). De exemplu, [da|nu] NU înseamnă „da sau nu”, ci potrivește o singură literă dintre d, a, |, n, u!
  • Plasarea cratimei la mijloc fără escapare când vrei să potrivești caracterul minus (ex. [a-z-_] creează un interval accidental între z și _ sau dă eroare). Scrie mereu cratima la final: [a-z_-] sau escapeaz-o: [a-z\-_].
  • Scrierea unui interval invalid precum [A-z], care pe lângă litere include și caracterele ASCII dintre Z (90) și a (97): [ \ ] ^ _ `. Folosește întotdeauna [A-Za-z].

Simboluri și rețete înrudite

  • [^...] (set negat): Potrivește orice caracter care NU se află în lista sau intervalul dintre parantezele drepte.
  • \d și \D (cifre): Scurtătură pentru orice cifră zecimală de la 0 la 9 (\d) sau orice caracter care nu este cifră (\D).
  • \w și \W (caractere de cuvânt): Potrivește litere, cifre și caracterul underscore [a-zA-Z0-9_] (\w) sau opusul acestora (\W).
  • | (operatorul SAU / alternare): Permite alegerea între două sau mai multe expresii alternative (SAU logic în RegEx).