[^…] (set negat) în Expresii Regulare (RegEx)

Clase de caractere PCRE / ECMAScript / POSIX Q&A / Distribuie cod

Potrivește orice caracter care NU se află în lista sau intervalul dintre parantezele drepte.

Tipar RegEx
[^abc]   |   [^0-9]   |   "[^"]*"

Ce face [^...] (set negat)

Atunci când simbolul circumflex (^) este plasat chiar pe prima poziție în interiorul parantezelor drepte ([^...]), el inversează (neagă) setul de caractere: expresia va potrivi orice caracter care nu este listat în paranteze.

Seturile negate sunt extrem de utile și rapide pentru a extrage textul până la un anumit delimitator (de exemplu "[^"]*" pentru un șir între ghilimele sau [^,]+ pentru valorile dintr-un rând CSV), evitând problemele de performanță (catastrophic backtracking) ale lui .*?. Notă importantă: un set negat precum [^a] potrivește inclusiv caracterul de linie nouă (\n) și cere obligatoriu prezența unui caracter!

Variante și sintaxă asociată

Expresie / Simbol Descriere
[^abc] Orice caracter în afară de a, b sau c (inclusiv spații și \n).
[^0-9] Orice caracter care nu este cifră (echivalent cu \D).
[^"\r\n]+ Unul sau mai multe caractere care nu sunt ghilimele și nu trec pe linie nouă.
<[^>]+> Potrivește un tag HTML simplu de la < până la primul > întâlnit.
[a^b] Dacă ^ NU este primul caracter din paranteze, este tratat ca simbol ^ literal.

Exemple

Exemplul 1: Extragerea textului dintre ghilimele cu „[^”]*”

Folosind [^"]* în loc de .*, ne asigurăm că potrivirea se oprește exact la ghilimeaua de închidere.

Expresie: /"[^"]*"/g
Text:     ' utilizatorul "alex_pop" a trimis mesajul "Salutare tuturor!" '

Potriviri găsite (Matches)

Match 1: "\"alex_pop\""
Match 2: "\"Salutare tuturor!\""

Exemplul 2: Eliminarea caracterelor nepermise dintr-un username

Păstrăm doar litere, cifre, punct și underscore înlocuind tot ce potrivește [^a-zA-Z0-9._].

// PHP:
$input = "ion.popescu!@# 2026$";
$username = preg_replace('/[^a-zA-Z0-9._]+/', '', $input);

Potriviri găsite (Matches)

"ion.popescu2026"

Greșeli frecvente

  • Confuzia între ^ la începutul expresiei (ancoră pentru începutul șirului, ex. ^[abc]) și ^ în interiorul parantezelor (set negat, ex. [^abc]).
  • Presupunerea că q[^u] va potrivi litera q la finalul cuvântului Iraq: [^u] cere obligatoriu existența unui caracter după q care să nu fie u. Pentru „q neurmat de u chiar și la final de cuvânt”, folosește negative lookahead: q(?!u).

Simboluri și rețete înrudite

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: [^…] (set negat)

Ai o nelămurire despre utilizarea comenzii [^…] (set negat) 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.