§

Tipar

Flaguri
§

Șir de test

§

Potriviri

0 potriviri

    Nicio potrivire încă — tastează un tipar și un șir de test mai sus.

    §

    Mod înlocuire

    Referință rapidă

    Clase de caractere

    \\d
    Orice cifră, echivalent cu [0-9].
    \\w
    Orice caracter de cuvânt — litere, cifre sau underscore.
    \\s
    Orice spațiu alb — spațiu, tab, linie nouă etc.

    Ancore

    \\b
    O aserțiune de lățime zero la o graniță de cuvânt.
    ^
    Începutul intrării (sau al fiecărei linii când flagul m este setat).
    $
    Sfârșitul intrării (sau al fiecărei linii când flagul m este setat).

    Cuantificatori

    *
    Zero sau mai multe din tokenul anterior, lacom.
    +
    Una sau mai multe din tokenul anterior, lacom.
    ?
    Zero sau una din tokenul anterior — face și un cuantificator precedent leneș.
    {n,m}
    Între n și m repetiții ale tokenului anterior.

    Grupuri

    (...)
    Grup de captură — expus ca $1, $2, … în înlocuiri.
    (?:...)
    Grup necapturant — grupează fără a consuma un slot.
    (?...)
    Grup de captură numit — expus ca $ în înlocuiri.

    Privire în jur

    (?=...)
    Lookahead pozitiv — potrivește doar dacă este urmat de …
    (?!...)
    Lookahead negativ — potrivește doar dacă NU este urmat de …
    (?<=...)
    Lookbehind pozitiv — potrivește doar dacă este precedat de …
    (?
    Lookbehind negativ — potrivește doar dacă NU este precedat de …

    Escape-uri

    \\\\
    Un caracter backslash literal.
    \\.
    Un punct literal — escape orice metacaracter pentru a-l potrivi literal.

    Expresiile regulate JavaScript alimentează munca zilnică a dezvoltatorilor din SUA și Marea Britanie: potrivirea convențiilor de mesaje de commit în hook-urile Husky pre-commit, validarea formatelor SKU în teme Shopify, analizarea formatului Apache Combined Log într-o interogare AWS Athena sau sanitarizarea câmpurilor de intrare într-un formular React înainte ca acesta să ajungă vreodată la un handler Express. Echipele fintech din Marea Britanie care aplică formatele de cod de sortare Open Banking (`\\d{2}-\\d{2}-\\d{2}`) lovesc același motor regex ECMAScript în browserele Chromium. Acest testor rulează fiecare tipar împotriva constructorului `RegExp` din browser exact cum o face producția, cu inspecția grupurilor de captură, comutatoare de flaguri și evidențiere live — astfel încât expresia pe care o livrezi și cea pe care o testezi aici sunt bit-identice.

    Cum funcționează regex în browserul tău?

    Fiecare runtime JavaScript livrează un motor de expresii regulate nativ — new RegExp(pattern, flags) compilează tiparul tău, apoi metode precum String.prototype.match, String.prototype.replace și RegExp.prototype.exec îl execută pe orice șir de intrare. Acest testor îmbracă acel motor într-o interfață, astfel încât să poți edita, rula și inspecta tipare fără a părăsi browserul. Nimic din ceea ce tastezi — tipar, flaguri, șir de test sau înlocuire — nu este trimis prin rețea.

    Cum funcționează testorul de regex?

    Conducta este alcătuită din câțiva pași scurți, toți rulând pe partea clientului la fiecare tastare (debashate la 150 ms pentru ca tastarea să rămână fluidă):

    1. Corpul tiparului tău este citit din câmpul de mai sus (fără delimitatoare / la început sau sfârșit — sunt decorative). Flagurile selectate prin pastile sunt concatenate într-un șir de flaguri precum gi sau gimsuy.
    2. new RegExp(corpTipar, flaguri) compilează tiparul. Dacă motorul aruncă o SyntaxError (de exemplu, o paranteză nepotrivită sau un escape invalid), mesajul este afișat deasupra șirului de test și lista de potriviri este golită. Eroarea de compilare este efectiv err.message de la V8 / SpiderMonkey / JavaScriptCore, deci se potrivește cu ceea ce ai vedea în DevTools.
    3. Pentru lista de potriviri, testorul enumeră întotdeauna cu un flag global sintetic — astfel încât, chiar dacă dezactivezi g, lista arată în continuare fiecare potrivire. Protecția standard împotriva potrivirilor de lățime zero (if (m.index === rx.lastIndex) rx.lastIndex++) menține bucla să nu se învârtă pe tiparele care se potrivesc cu un șir gol. Modul înlocuire respectă setul real de flaguri, deci $& se comportă la fel ca String.prototype.replace.
    4. Între fiecare iterație, testorul verifică performance.now() - start și anulează după 50 ms. Aceasta protejează împotriva backtracking-ului catastrofal pe intrări precum (a+)+$ împotriva unui șir lung de a — fila s-ar bloca altfel. Protecția este cu cel mai bun efort: un tipar patologic cu o singură potrivire poate consuma totuși timp în cadrul unui singur apel exec. Dacă se întâmplă vreodată, reîmprospătează fila și rescrie tiparul cu un cuantificator non-lacom sau un posesiv de tip atomic (de exemplu, [^x]*x).
    5. Șirul de test este împărțit în segmente la intervalul fiecărei potriviri, iar segmentele potrivite sunt împachetate în elemente <mark class="rx-match rx-cap-N">, unde N alternează prin șase culori de paletă, astfel încât potrivirile adiacente să fie ușor de deosebit dintr-o privire. Grupurile numerotate ale fiecărei potriviri (m[1], m[2], …) și grupurile numite (m.groups) sunt afișate ca rânduri etichetate dedesubt; dacă flagul d este setat, sunt afișați și indecșii [start, sfârșit] per grup.

    De ce să folosești acest testor de regex?

    • Confidențialitate: fiecare tipar, șir de test și înlocuire rulează în browser folosind motorul JavaScript RegExp încorporat. Nimic nu părăsește fila — important când intrarea este un jurnal de client, un model de acreditare scurs sau orice altceva pe care nu l-ai lipi într-un teren de joacă regex SaaS găzduit.
    • Smecherie cinstită: testorul expune exact motorul regex pe care îl folosesc Node.js, Chrome, Safari, Firefox și orice validator de formulare bazat pe browser. Nu există un strat de traducere Perl pentru a ascunde diferențe subtile — ceea ce funcționează aici funcționează în codul tău.
    • Depanare a capturii și grupurilor numite: fiecare grup numerotat ($1, $2, …) și grup numit ($<an>) este afișat per potrivire, astfel încât să poți construi un parser și să citești sloturile înapoi fără a ghici. Modul înlocuire îți permite să amesteci liber grupurile — $2-$1 schimbă primele două sloturi, $<nume> introduce un slot numit, iar $& ecou întreaga potrivire.
    • Protecție împotriva backtracking-ului catastrofal: un plafon de 50 ms la enumerare anulează tiparele patologice precum (a+)+$ înainte de a îngheța fila. Vezi o eroare explicativă în locul unui browser blocat, iar pagina se recuperează imediat.

    Care sunt aplicațiile comune ale unui testor de regex?

    Expresiile regulate apar în dezvoltarea web, securitate și prelucrarea datelor — acest testor vizează cele mai frecvente cazuri de utilizare:

    • Validare formulare: prototipează un tipar pentru e-mail, telefon sau cod poștal, lipește exemple de intrări în șirul de test și confirmă că fiecare caz pozitiv se potrivește și fiecare caz negativ nu, înainte de a livra tiparul în codul de producție.
    • Răzuire jurnale: lipește o bucată de jurnal NGINX, aplicație sau audit, scrie un tipar cu grupuri numite pentru părțile care te interesează ((?<ip>…) (?<cale>…)) și citește sloturile capturate per potrivire pentru a confirma că analizatorul tău este corect.
    • Căutare și înlocuire pentru refactorizare: folosește modul înlocuire pentru a rescrie identificatori într-un fragment — (\\w+)\.set(\\w+)\\($1.$2 = transformă apelurile de getter în atribuiri de proprietăți, iar previzualizarea live arată rezultatul înainte de a-l comite într-un codemod.

    Cum arată un exemplu de regex?

    Ia tiparul (\\d{4})-(\\d{2})-(\\d{2}) cu flagul g, rulat pe șirul de test release 2025-11-15, prerelease 2026-05-25. Motorul găsește două potriviri. Prima potrivire este 2025-11-15 cu grupul 1 = 2025, grupul 2 = 11, grupul 3 = 15. A doua potrivire este 2026-05-25 cu aceeași formă de grupuri. În modul înlocuire, modelul de înlocuire $3/$2/$1 rescrie ambele date la 15/11/2025 și 25/05/2026 — o conversie ISO în ZL (zi/lună) dintr-un singur tipar pe care o poți verifica vizual înainte de a conecta tiparul într-un script.

    Folosește acest testor ca drum rapid pentru orice lucrare cu regex — construirea, depanarea sau rescrierea tiparelor. Totul rulează local; nimic nu este înregistrat; motorul regex este cel pe care îl livrează browserul tău, deci comportamentul se potrivește cu ceea ce codul de producție va vedea în runtime.