Exemple de expresii regulate
Variante gata făcute: copiază codul direct sau deschide exemplul în generator și modifică-l după nevoie.
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"
"Ștefan și Țuțu merg la Brașov cu Ana.".match(/\p{Lu}\p{Ll}+/gu);
// ["Ștefan", "Țuțu", "Brașov", "Ana"]
"Tricou 49 lei, blugi 189 lei, cod 2026.".match(/(?<=\s|^)(\d+)(?= lei)/g);
// ["49", "189"]
// 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
- Scrie expresia în câmpul Expresia regulată, fără barele
/de la capete. - Bifează flagurile:
gpentru toate potrivirile,ifără diferență de majuscule,mpentru^și$la fiecare rând,s,u,ysaud. - Pune textul în Textul de test. Potrivirile se colorează, iar tabelul arată poziția și fiecare grup, inclusiv cele cu nume.
- Opțional, scrie în Înlocuiește cu un model ca
$2-$1sau$<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.