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

Tester de expresii regulate (regex) JavaScript

Scrii o expresie regulată, alegi flagurile și vezi pe loc potrivirile marcate în text, grupurile de captură, rezultatul unei înlocuiri și ce înseamnă fiecare bucată din expresie.

Exemple de expresii regulate

Variante gata făcute: copiază codul direct sau deschide exemplul în generator și modifică-l după nevoie.

Telefoane în format internațional Grupurile de captură ($1, $2, $3) rearanjează numărul.
const re = /\b0(7\d{2})\s?(\d{3})\s?(\d{3})\b/g;
"Ana: 0722 123 456".replace(re, "+40 $1 $2 $3");
// "Ana: +40 722 123 456" 
Cuvinte cu diacritice \p{Lu} (majusculă) și \p{Ll} (minusculă) prind și Ș, Ț, ă; cer flagul u.
"Ștefan și Țuțu merg la Brașov cu Ana.".match(/\p{Lu}\p{Ll}+/gu);
// ["Ștefan", "Țuțu", "Brașov", "Ana"]
Privire înainte și înapoi Prinde doar numărul, fără să includă spațiul dinainte sau cuvântul „lei” de după.
"Tricou 49 lei, blugi 189 lei, cod 2026.".match(/(?<=\s|^)(\d+)(?= lei)/g);
// ["49", "189"]
Aceeași expresie în PHP și Python PHP pune expresia între delimitatori; Python o scrie ca șir brut (r"…").
// PHP
preg_match_all('/\b\d{6}\b/', $text, $potriviri);
preg_replace('/(\d{2})\.(\d{2})\.(\d{4})/', '$3-$2-$1', $text);

# Python
import re
re.findall(r"\b\d{6}\b", text)
re.sub(r"(\d{2})\.(\d{2})\.(\d{4})", r"\3-\2-\1", text)

Cum folosești testerul de regex

  1. Scrie expresia în câmpul Expresia regulată, fără barele / de la capete.
  2. Bifează flagurile: g pentru toate potrivirile, i fără diferență de majuscule, m pentru ^ și $ la fiecare rând, s, u, y sau d.
  3. Pune textul în Textul de test. Potrivirile se colorează, iar tabelul arată poziția și fiecare grup, inclusiv cele cu nume.
  4. Opțional, scrie în Înlocuiește cu un model ca $2-$1 sau $<an> ca să vezi textul după înlocuire.

Expresia rulează în browserul tău, cu motorul JavaScript al acestuia; nu se trimite nimic la server. O căutare care durează peste 2 secunde este oprită, ca pagina să nu se blocheze.

Litere cu diacritice

\w înseamnă doar [A-Za-z0-9_], deci nu prinde ă, â, î, ș, ț. Pentru cuvinte românești folosește \p{L} cu flagul u:

/\w+/g          // „mașină” se rupe în „ma” și „in”
/\p{L}+/gu      // „mașină” rămâne un singur cuvânt

Grupuri cu nume și înlocuire

const re = /(?<zi>\d{2})\.(?<luna>\d{2})\.(?<an>\d{4})/g;
"15.03.2026".replace(re, "$<an>-$<luna>-$<zi>");   // "2026-03-15"

Exemplele gata făcute (telefon, cod poștal, CNP, IBAN) verifică doar forma textului. Pentru CNP și IBAN contează și cifra de control, pe care o expresie regulată nu o poate calcula.

Backtracking catastrofal

Cuantificatorii puși unul în altul peste același text, de exemplu (a+)+$ sau (.*)*, pot face motorul să încerce un număr uriaș de combinații când textul nu se potrivește. Pe un server, o astfel de expresie aplicată pe text primit de la utilizatori poate bloca procesul (atacul se numește ReDoS).

Întrebări frecvente

Merge expresia și în PHP sau Python?

De cele mai multe ori da, dar nu întotdeauna: sintaxa grupurilor cu nume, flagurile și clasele Unicode diferă puțin între motoare. Unealta folosește motorul JavaScript al browserului.

De ce apar potriviri goale?

O expresie care poate prinde zero caractere, de exemplu \d* sau ^, se potrivește și în pozițiile dintre caractere. Ele apar ca o linie roșie subțire în text.