Fișă de referință regex
Expresiile regulate sunt suficient de compacte încât sintaxa este mai ușor de consultat decât de memorat. Această pagină o cuprinde în întregime pe un singur ecran — clase, cuantificatori, ancore, grupuri, lookaround, escapare și flag-urile — cu un exemplu funcțional pentru fiecare rând.
Varianta este JavaScript, cea care rulează în browserul tău și pe care o folosește testerul de regex de pe acest site. Cea mai mare parte este identică în Python, Java, Go și PCRE; acolo unde variantele diferă, diferă la margini — suportul pentru lookbehind, sintaxa grupurilor denumite și dacă \d înseamnă „cifră ASCII" sau „orice cifră Unicode".
Două lucruri explică majoritatea surprizelor. Cuantificatorii sunt lacomi: iau tot ce pot și cedează abia când restul tiparului dă greș, de aceea <.+> înghite două etichete, iar <.+?> nu. Iar alternarea are cea mai slabă prioritate dintre toate, așa că ^a|b$ înseamnă „începe cu a sau se termină cu b" — nu ceea ce intenționează majoritatea oamenilor când o scriu.
Clase de caractere
11Prescurtările sunt doar ASCII, cu excepția cazului în care adaugi flag-ul u și folosești escapări de proprietate Unicode.
| Sintaxă | Semnificație | Exemplu |
|---|---|---|
| . | Orice caracter, cu excepția unei întreruperi de linieAdaugă flag-ul s pentru a-l face să potrivească și liniile noi. | /a.c/"abc" → "abc" |
| \d | O cifră, 0–9 | /\d+/"order 42" → "42" |
| \D | Orice nu este o cifră | /\D+/"42abc" → "abc" |
| \w | Literă, cifră sau underscoreDoar ASCII — „é" nu este \w. | /\w+/"user_1!" → "user_1" |
| \W | Orice nu potrivește \w | /\W+/"a++b" → "++" |
| \s | Orice spațiu alb, inclusiv taburi și linii noi | /\s+/"a \t b" → " \t " |
| \S | Orice caracter care nu este spațiu alb | /\S+/" hi" → "hi" |
| [abc] | Oricare dintre caracterele listate | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Orice caracter, cu excepția celor listate | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Un interval de caractere | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Orice literă Unicode (necesită flag-ul u) | /\p{L}+/"42 café" → "café" |
Cuantificatori
7Toți aceștia sunt lacomi în mod implicit: iau cât mai mult pot și cedează abia dacă restul tiparului dă greș.
| Sintaxă | Semnificație | Exemplu |
|---|---|---|
| * | Zero sau mai multe | /ab*/"a" → "a" |
| + | Una sau mai multe | /ab+/"abbb" → "abbb" |
| ? | Zero sau una — o face opțională | /colou?r/"color" → "color" |
| {3} | Exact trei | /\d{3}/"id 12345" → "123" |
| {2,} | Două sau mai multe | /a{2,}/"aaa" → "aaa" |
| {2,4} | Între două și patru | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Leneș — ia cât mai puțin posibilLacomul <.+> ar înghiți ambele etichete. | /<.+?>/"<a><b>" → "<a>" |
Ancore și limite
4Acestea potrivesc o poziție, nu un caracter, deci nu consumă nimic.
| Sintaxă | Semnificație | Exemplu |
|---|---|---|
| ^ | Începutul șirului sau al unei linii cu flag-ul m | /^a/"abc" → "a" |
| $ | Sfârșitul șirului sau al unei linii cu flag-ul m | /c$/"abc" → "c" |
| \b | O limită de cuvântAceasta este ceea ce împiedică „cat" să se potrivească în interiorul lui „concatenate". | /\bcat\b/"the cat sat" → "cat" |
| \B | Nu este o limită de cuvânt | /\Bcat/"concatenate" → "cat" |
Grupuri și alternare
5| Sintaxă | Semnificație | Exemplu |
|---|---|---|
| (abc) | Grup de capturare — reținut pentru înlocuire | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Grupare fără capturareFolosește-l când ai nevoie doar de grupare; păstrează numerele de capturare semnificative. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Grup de capturare denumit | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Oricare parte — alternareAlternarea are cea mai mică prioritate: ^a|b$ înseamnă „^a" sau „b$", nu „^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Referință inversă către primul grup | /(\w)\1/"letter" → "tt" |
Lookaround
4Aserțiuni despre ceea ce înconjoară o poziție. Ele însele nu potrivesc nimic, ceea ce le face sigure de combinat.
| Sintaxă | Semnificație | Exemplu |
|---|---|---|
| (?=…) | Lookahead — urmat de aceasta | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Lookahead negativ — nu este urmat de aceasta | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind — precedat de aceasta | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Lookbehind negativ — nu este precedat de aceasta | /(?<!\$)\b\d+/"about 40" → "40" |
Escapare
5Aceste douăsprezece caractere sunt cele care au nevoie de o bară oblică inversă pentru a fi luate literal.
| Sintaxă | Semnificație | Exemplu |
|---|---|---|
| \. | Un punct literal | /\d\.\d/"v2.5" → "2.5" |
| \\ | O bară oblică inversă literală | /\\/"C:\\dir" → "\\" |
| \n | Un salt de linie | /a\nb/"a\nb" → "a\nb" |
| \t | Un tab | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Un caracter dat prin punctul său de cod | /\u00e9/"café" → "é" |
Flag-uri
6| Flag | Denumire | Semnificație |
|---|---|---|
| g | Global | Găsește fiecare potrivire, nu doar prima. |
| i | Ignoră majusculele/minusculele | Potrivește indiferent de majuscule sau minuscule. |
| m | Multiline | Face ca ^ și $ să potrivească la fiecare întrerupere de linie, nu doar la capetele șirului. |
| s | Dot all | Permite ca . să potrivească și întreruperile de linie. |
| u | Unicode | Tratează tiparul ca puncte de cod și activează escapările de proprietate \p{…}. |
| y | Sticky | Potrivește doar exact la lastIndex, fără a căuta mai departe. |