Fără încărcare, 100% local, fără cont

Tutorial

Cum să testezi un regex fără să instalezi nimic

Ai scris un șablon și trebuie să știi dacă chiar potrivește ce te aștepți înainte de a-l pune în cod. Instalarea unei aplicații desktop sau lipirea unui jurnal privat într-un site oarecare e exagerată și adesea riscantă. Acest ghid arată cum să rulezi un regex pe propriul text chiar în browser, să comuti indicatorii care schimbă comportamentul, să citești grupurile de captură pe care le extrage și să vezi potrivirile evidențiate inline, fără ca șablonul și textul să-ți părăsească vreodată fila.

Pas cu pas

  1. Deschide testerul de regex și scrie șablonul în câmpul dintre cele două bare oblice. Barele nu le scrii tu: instrumentul le afișează ca să vezi șablonul așa cum îl citește un motor. Lipește textul de probă în caseta de dedesubt, de exemplu câteva linii de jurnal, o listă de adrese de e-mail sau un bloc de cod pe care vrei să-l cauți.
    Un șablon regex și un șir de indicatori introduși în tester, cu text de probă lipit în caseta de dedesubt
  2. Setează indicatorii în căsuța mică de lângă șablon. Indicatorul g găsește fiecare potrivire în loc să se oprească la prima; i face potrivirea insensibilă la majuscule; m permite ancorelor ^ și $ să potrivească începutul și sfârșitul fiecărei linii în loc de tot textul; s permite punctului să potrivească și întreruperile de linie. Combină-le liber, de exemplu gim.
  3. Apasă Test. Fiecare potrivire este evidențiată direct în text, iar lista de dedesubt arată fiecare potrivire cu poziția ei și valoarea fiecărui grup de captură. Ajustează șablonul și rulează-l din nou: previzualizarea se actualizează ca să poți restrânge șablonul până când prinde exact ce ai vrut și nimic altceva.
    Rezultatul testului: potriviri evidențiate inline și o listă care arată poziția fiecărei potriviri și grupurile ei de captură

Grupuri de captură, cu nume și numerotate

Un grup de captură este partea din șablon încadrată în paranteze și este modul în care extragi o bucată din fiecare potrivire în loc să confirmi doar că totul s-a potrivit. Grupurile numerotate sunt numărate de la stânga la dreapta după paranteza lor de deschidere: în (\d{4})-(\d{2})-(\d{2}) grupul 1 este anul, grupul 2 luna, grupul 3 ziua. Grupurile cu nume folosesc sintaxa (?<name>...), așa că (?<year>\d{4}) se citește mult mai bine decât un număr simplu când șablonul crește. Dacă vrei doar să grupezi fără să capturezi, de exemplu pentru a aplica un cuantificator pe mai multe caractere, folosește un grup fără captură (?:...) ca să nu-ți aglomereze lista de rezultate. Testerul afișează valoarea fiecărui grup pentru fiecare potrivire, ceea ce este cea mai rapidă cale de a confirma că extragi fragmentul corect.

Când un șablon se blochează sau se comportă greșit

Două probleme apar mereu și mereu. Prima este revenirea catastrofală: un șablon precum (a+)+$ rulat pe un șir lung care nu se potrivește poate face motorul să încerce un număr exponențial de căi și să înghețe. Testerul rulează fiecare test într-un Web Worker cu un cronometru de pază scurt, așa că în loc de o filă blocată primești un mesaj clar și poți simplifica șablonul, de obicei făcând un cuantificator posesiv în spirit, ancorându-l sau evitând repetiția imbricată. A doua este potrivirea lacomă față de cea leneșă: implicit .* apucă cât de mult poate, așa că pentru a potrivi conținutul unei singure etichete HTML vrei în schimb forma leneșă .*?. Dacă compari două versiuni ușor diferite ale unui șir ca să vezi ce ar trebui să vizeze șablonul, instrumentul de diferențe text le aliniază ca să fie evidentă diferența înainte să scrii expresia.

Cum evaluează browserul expresia dvs. regex

Browserele moderne includ un motor regex ECMAScript nativ care suportă setul complet de flaguri: potrivire insensibilă la majuscule (i), modul multilinie (m), dotAll (s), Unicode (u) și flagul sticky (y). Când tastați un pattern în tester, motorul îl compilează într-un NFA intern și îl evaluează față de șirul de test în timp real, raportând fiecare poziție de potrivire și orice grupuri de captură. Backtracking-ul se întâmplă local pe CPU-ul dvs.: un pattern precum (a+)+ pe un șir lung fără potrivire poate rula secunde întregi, iar observarea acelei blocări în browser este feedback util înainte de a implementa pattern-ul în codul de producție. Niciun text nu părăsește pagina, deci puteți lipi mostre de log sau orice intrare fără a le trimite printr-un server terț.

Instrumentele folosite în acest ghid

Întrebări frecvente

Șablonul sau textul meu de test este trimis către un server?

Nu. Regexul rulează într-un Web Worker în propriul tău browser, așa că șablonul și textul pe care îl testezi rămân în filă. Acest lucru contează pentru că textul pe care îl lipești este adesea un jurnal real, o listă de clienți sau o configurație internă, exact genul de date pe care nu le vrei pe serverul altcuiva. Deschide panoul Rețea din instrumentele de dezvoltare în timp ce apeși Test și nu vei vedea nicio cerere care să-ți scoată textul afară. Continuă să funcționeze și offline, odată ce pagina a fost încărcată.

Ce variantă de regex folosește testerul?

Folosește motorul de expresii regulate al JavaScript integrat în browserul tău, același care rulează în Node.js și în orice pagină web. Asta acoperă sintaxa obișnuită: clase de caractere, cuantificatori, ancore, alternanță, grupuri de captură numerotate și cu nume, anticipare și retroanticipare. Câteva funcții din alte variante, precum recursivitatea în stil Perl sau cuantificatorii posesivi, nu fac parte din motorul JavaScript, așa că dacă un șablon pe care l-ai copiat dintr-un proiect PHP sau Python se comportă diferit, de obicei acea diferență de variantă este motivul.

Surse