Tester regex
Testează expresii regulate JavaScript în timp real, cu potriviri evidențiate, grupuri de captură, înlocuire și explicația fiecărui element.
| # | Poziție | Potrivire | Grupuri |
|---|
Explicația modelului
Atenție: un grup repetat conține un alt cuantificator deschis, de exemplu (a+)+. Astfel de modele pot dura timp exponențial pe un text care aproape se potrivește (backtracking catastrofal).
Cum folosești testerul de regex
- Scrie modelul în Expresie regulată, fără barele oblice din jur. Barele și fanioanele active sunt afișate în jurul câmpului, ca în
/model/g. - Bifează Fanioane de care ai nevoie:
g(global),i(ignoră majusculele),m(multilinie),s(dotAll),u(unicode) sauy(sticky). - Lipește textul de căutat în Text de test. Potrivirile sunt evidențiate pe măsură ce scrii, iar tabelul listează fiecare potrivire cu poziția și grupurile ei de captură.
- Ca să încerci o substituție, completează Înlocuire. Caseta Rezultat după înlocuire arată textul cu fiecare potrivire înlocuită, gata de copiat.
- Citește Explicația modelului ca să verifici ce face fiecare parte a regex-ului tău. Nu știi de unde să începi? Apasă Încarcă un exemplu.
Ce arată testerul
- Potriviri evidențiate: fiecare potrivire din textul de test este marcată, așa că vezi dintr-o privire ce se prinde și ce scapă.
- Tabelul de potriviri: numărul fiecărei potriviri, poziția ei (deplasarea în caractere de la început, numărând de la 0), textul potrivit și valoarea fiecărui grup de captură. Grupurile cu nume, precum
(?<year>\d{4}), apar sub numele lor, iar grupurile care nu au participat la potrivire sunt afișate ca „(nepotrivit)”. Sunt listate primele 1.000 de potriviri. - Înlocuire: textul de înlocuire folosește sintaxa JavaScript:
$1sau$2pentru grupuri numerotate,$<name>pentru grupuri cu nume,$&pentru întreaga potrivire și$$pentru un semn dolar literal. Fără fanionulg, doar prima potrivire este înlocuită. - Explicație: modelul este împărțit în elemente (text literal, clase de caractere, ancore, grupuri, cuantificatori, lookaround, referințe inverse), fiecare cu o scurtă descriere. Grupurile imbricate sunt indentate, ceea ce face modelele lungi mult mai ușor de verificat.
Fanioanele pe scurt
| Fanion | Efect |
|---|---|
g |
Găsește toate potrivirile, în loc să se oprească la prima |
i |
Ignoră diferența dintre majuscule și minuscule |
m |
^ și $ potrivesc începutul și sfârșitul fiecărei linii |
s |
. potrivește și rupturile de rând |
u |
Mod Unicode complet: \u{…}, \p{…} și emoji tratate ca un singur caracter |
y |
Sticky: fiecare potrivire trebuie să înceapă exact unde s-a terminat precedenta |
Backtracking catastrofal
Unele modele cer timp exponențial pe un text care aproape se potrivește. Exemplul clasic este (a+)+$ testat pe un șir lung de a urmat de un b: motorul încearcă toate modurile de a împărți literele a între cei doi cuantificatori înainte să renunțe. Această problemă, cunoscută ca ReDoS, a doborât site-uri reale.
Instrumentul îți protejează browserul în trei feluri. Potrivirea rulează într-un worker în fundal, care este oprit după 1,5 secunde; textul de test este limitat la 100.000 de caractere; iar explicația te avertizează când un grup repetat conține un alt cuantificator deschis. Când un model depășește timpul, rescrie-l astfel încât fiecare caracter să poată fi potrivit într-un singur fel, de exemplu a+$ în loc de (a+)+$.
Întrebări frecvente
Ce variantă de regex folosește acest instrument?
Folosește motorul JavaScript (ECMAScript) al browserului tău, exact cum ar face new RegExp() și String.prototype.replace() în codul tău. Cea mai mare parte a sintaxei este comună cu PCRE, Python și Java, dar unele funcții diferă: cuantificatorii posesivi și grupurile atomice nu există în JavaScript, iar lookbehind este acceptat în toate browserele actuale.
De ce găsește modelul meu o singură potrivire?
Fanionul g este dezactivat. Fără el, JavaScript se oprește după prima potrivire, iar înlocuirea schimbă doar acea potrivire.
Cum potrivesc un punct, o paranteză sau un semn de întrebare literal?
Pune-le în față o bară oblică inversă: \., \[, \?. Explicația arată caracterele cu escape ca „(cu escape)”, ca să poți verifica.
Este textul meu trimis undeva?
Nu. Modelul și textul sunt procesate doar în browserul tău, ceea ce face acest instrument sigur pentru fișiere de jurnal sau date care conțin informații personale.
De ce diferă poziția de coloana din editorul meu?
Pozițiile numără caracterele de la 0, pe toate liniile, așa cum face match.index din JavaScript. Rupturile de rând contează ca un singur caracter, iar un emoji din afara planului multilingv de bază contează ca două.
Instrumente similare
- Formatare și validare JSON Formatator și validator JSON gratuit, care înfrumusețează, minifică și verifică JSON în browser, cu erori de sintaxă raportate pe linie și coloană.
- Codificare și decodare URL Codificare și decodare URL gratuită. Codifică procentual parametri sau URL-uri complete, decodează secvențe %XX și tratează + ca spațiu, în browserul tău.
- Generator de hash Generează hash-uri MD5, SHA-1, SHA-256 și SHA-512 pentru text sau fișiere de orice dimensiune și verifică sumele de control. Totul rulează în browser.