Utilia

Tester regularnih izraza

Testiraj JavaScript regularne izraze uživo s istaknutim podudaranjima, skupinama koje hvataju, zamjenom i objašnjenjem svakog dijela uzorka na običnom jeziku.

Zastavice

Podudaranja
#PoložajPodudaranjeSkupine

Objašnjenje uzorka

    Kako koristiti regex tester

    1. Upiši uzorak u Regularni izraz, bez okolnih kosih crta. Kose crte i aktivne zastavice prikazuju se oko polja, kao u /uzorak/g.
    2. Označi Zastavice koje trebaš: g (global), i (ignoriraj velika/mala slova), m (multiline), s (dotAll), u (unicode) ili y (sticky).
    3. Zalijepi tekst koji pretražuješ u Testni tekst. Podudaranja se ističu dok tipkaš, a tablica navodi svako podudaranje s njegovim položajem i skupinama koje hvataju.
    4. Za isprobavanje zamjene ispuni Zamjena. Okvir Rezultat nakon zamjene prikazuje tekst sa zamijenjenim svakim podudaranjem, spreman za kopiranje.
    5. Pročitaj Objašnjenje uzorka da provjeriš što svaki dio tvog regexa radi. Ne znaš odakle početi? Klikni Učitaj primjer.

    Što tester prikazuje

    • Istaknuta podudaranja: svako podudaranje u testnom tekstu je označeno, pa jednim pogledom vidiš što je uhvaćeno, a što propušteno.
    • Tablica podudaranja: broj svakog podudaranja, njegov položaj (pomak znakova od početka, brojeći od 0), podudarani tekst i vrijednost svake skupine koja hvata. Imenovane skupine poput (?<year>\d{4}) prikazuju se pod svojim imenom, a skupine koje nisu sudjelovale u podudaranju prikazuju se kao „(nije podudareno)“. Navodi se prvih 1000 podudaranja.
    • Zamjena: tekst zamjene koristi JavaScript sintaksu: $1 ili $2 za numerirane skupine, $<name> za imenovane skupine, $& za cijelo podudaranje i $$ za doslovan znak dolara. Bez zastavice g zamjenjuje se samo prvo podudaranje.
    • Objašnjenje: uzorak se dijeli na tokene (doslovni tekst, klase znakova, sidra, skupine, kvantifikatori, pogledi unaprijed/unatrag, povratne reference), svaki s kratkim opisom. Ugniježđene skupine su uvučene, što dugačke uzorke čini puno lakšima za pregled.

    Zastavice ukratko

    Zastavica Učinak
    g Pronalazi sva podudaranja umjesto da stane na prvom
    i Ignorira razliku između velikih i malih slova
    m ^ i $ podudaraju se na početku i kraju svakog retka
    s . obuhvaća i prijelome redaka
    u Potpuni Unicode način: \u{…}, \p{…} i emojiji tretirani kao pojedinačni znakovi
    y Sticky: svako podudaranje mora početi točno gdje je prethodno završilo

    Katastrofalno vraćanje (backtracking)

    Neki uzorci troše eksponencijalno vrijeme na tekstu koji se gotovo podudara. Klasičan primjer je (a+)+$ testiran na dugom nizu slova a iza kojeg slijedi b: mehanizam isprobava svaki način raspodjele slova a između dvaju kvantifikatora prije nego odustane. Taj problem, poznat kao ReDoS, srušio je prave web-stranice.

    Alat štiti tvoj preglednik na tri načina. Podudaranje se izvodi u pozadinskom radniku koji se zaustavlja nakon 1,5 sekunde; testni tekst ograničen je na 100 000 znakova; a objašnjenje te upozorava kad ponavljana skupina sadrži još jedan neograničeni kvantifikator. Kad uzorku istekne vrijeme, prepiši ga tako da se svaki znak može podudariti samo na jedan način, na primjer a+$ umjesto (a+)+$.

    Česta pitanja

    Koju inačicu regexa koristi ovaj alat?

    Koristi JavaScript (ECMAScript) mehanizam tvog preglednika, točno kao što bi new RegExp() i String.prototype.replace() radili u tvom kodu. Većina sintakse zajednička je s PCRE-om, Pythonom i Javom, ali neke se mogućnosti razlikuju: posesivni kvantifikatori i atomske skupine ne postoje u JavaScriptu, a pogled unatrag podržavaju svi aktualni preglednici.

    Zašto moj uzorak pronalazi samo jedno podudaranje?

    Zastavica g je isključena. Bez nje JavaScript staje nakon prvog podudaranja, a zamjena mijenja samo to jedno.

    Kako podudariti doslovnu točku, zagradu ili upitnik?

    Izbjegni ga obrnutom kosom crtom: \., \[, \?. Objašnjenje prikazuje izbjegnute znakove kao „(izbjegnut)“ pa možeš provjeriti.

    Šalje li se moj tekst negdje?

    Ne. Uzorak i tekst obrađuju se samo u tvom pregledniku, zbog čega je alat siguran za datoteke dnevnika ili podatke koji sadrže osobne informacije.

    Zašto se položaj razlikuje od stupca u mom uređivaču?

    Položaji broje znakove od 0, kroz sve retke, kao što radi JavaScriptov match.index. Prijelom retka broji se kao jedan znak, a emoji izvan osnovne višejezične ravnine broji se kao dva.