Tester de regex
Introdu un model și un text pe care să-l testezi, iar fiecare potrivire este evidențiată pe măsură ce scrii.
Exemple
Folosește $1 sau $<name> pentru grupuri, $& pentru întreaga potrivire și $$ pentru semnul de dolar.
Elemente uzuale
- .
- orice caracter în afară de sfârșitul de rând
- \d
- o cifră 0–9
- \w
- o literă a–z, o cifră sau o linie de subliniere
- \s
- spațiu, tab sau sfârșit de rând
- \D \W \S
- opusul lui \d, \w și \s
- \b
- granița dintre un caracter de cuvânt și altul
- ^
- începutul textului, sau al rândului cu m
- $
- sfârșitul textului, sau al rândului cu m
- [abc] [a-z]
- unul dintre caractere, sau un caracter din interval
- [^abc]
- niciunul dintre caractere
- a|b
- a sau b
- (…)
- grup de captură
- (?:…)
- grup fără captură
- (?<name>…)
- grup cu nume
- \1 \k<name>
- același text ca grupul 1 sau ca grupul numit name
- *
- de zero sau mai multe ori
- +
- o dată sau de mai multe ori
- ?
- de zero ori sau o dată
- {3} {2,5} {2,}
- exact de 3 ori, de 2 până la 5 ori sau de cel puțin 2 ori
- *? +? ??
- de cât mai puține ori
- (?=…)
- urmat de
- (?!…)
- neurmat de
- (?<=…) (?<!…)
- precedat de, neprecedat de
- \p{L}
- o literă din orice sistem de scriere (necesită u sau v)
Cum funcționează
O expresie regulată este un model care descrie text. \d+ înseamnă una sau mai multe cifre, [a-z] o literă de la a la z, iar ^ începutul textului. Modelul este încercat pe text de la stânga la dreapta, iar fiecare loc în care se potrivește este o potrivire.
Testerul folosește motorul browserului tău, adică varianta de expresii regulate definită de standardul ECMAScript pentru JavaScript. Ea diferă de PCRE, Python și .NET în câteva privințe: de exemplu, nu există cuantificatori posesivi sau grupuri atomice, iar lookbehind poate avea orice lungime.
Flagurile schimbă modul în care este citit modelul. g găsește toate potrivirile, nu doar prima, i ignoră diferența dintre literele mari și mici, m face ca ^ și $ să se aplice fiecărui rând, iar s permite punctului să se potrivească și cu sfârșitul de rând. u citește textul ca pe caractere Unicode în loc de unități UTF-16, iar v este o versiune mai strictă a lui u din ECMAScript 2024, cu operații pe mulțimi în clasele de caractere. y cere ca fiecare potrivire să înceapă exact acolo unde s-a terminat cea anterioară, iar d reține pozițiile grupurilor.
Parantezele capturează ce au găsit și sunt numerotate după paranteza de deschidere, de la stânga. (?<name>…) dă un nume unui grup, iar (?:…) grupează fără să captureze. În înlocuire, $1 înseamnă grupul 1, $<name> un grup cu nume, $& întreaga potrivire, iar $$ un semn de dolar. Fără flagul g este înlocuită doar prima potrivire.
Unele modele durează extrem de mult, de exemplu (a+)+$ aplicat unui șir lung de a urmat de alt caracter. Motorul încearcă atunci combinații al căror număr crește exponențial cu lungimea textului, fenomen numit backtracking catastrofal. Aici căutarea rulează într-un fir de execuție separat, oprit după două secunde, ca pagina să nu se blocheze. Într-un program de pe un server, același model poate deveni un risc de securitate (ReDoS).
Pozițiile sunt numărate în unități UTF-16, ca în JavaScript, deci un emoji contează dublu. O potrivire goală, de exemplu ^ sau \b, este marcată cu o linie subțire. Textul tău nu părăsește niciodată browserul.