Utilia

Regex-teszter

Tesztelj JavaScript reguláris kifejezéseket élőben: kiemelt találatok, rögzítő csoportok, csere és minden elem magyarázata közérthető nyelven.

Flagek

Találatok
#PozícióTalálatCsoportok

A minta magyarázata

    Hogyan használd a regex-tesztert

    1. Írd be a mintát a Reguláris kifejezés mezőbe, a körülvevő perjelek nélkül. A perjeleket és az aktív flageket a mező körül látod, például /minta/g alakban.
    2. Jelöld be a szükséges Flageket: g (global), i (kis- és nagybetű egyenlő), m (multiline), s (dotAll), u (unicode) vagy y (sticky).
    3. Illeszd be az átvizsgálandó szöveget a Tesztszöveg mezőbe. A találatok gépelés közben kiemelődnek, a táblázat pedig minden találatot felsorol a pozíciójával és a rögzítő csoportjaival.
    4. Csere kipróbálásához töltsd ki a Csere mezőt. Az Eredmény a csere után mezőben a szöveg látható minden találat lecserélésével, másolásra készen.
    5. Olvasd el A minta magyarázatát, hogy ellenőrizd, a regexed egyes részei mit csinálnak. Nem tudod, hol kezdd? Kattints a Példa betöltése gombra.

    Mit mutat a teszter

    • Kiemelt találatok: a tesztszövegben minden találat meg van jelölve, így első pillantásra látod, mit fog meg a minta, és mit hagy ki.
    • Találatok táblázata: az egyes találatok sorszáma, pozíciója (karakterindex a szöveg elejétől, 0-tól számolva), az illesztett szöveg és minden rögzítő csoport értéke. A névvel ellátott csoportok, például a (?<year>\d{4}), a nevükön jelennek meg, azok a csoportok pedig, amelyek nem vettek részt az illesztésben, „(nem illeszkedett)” felirattal. Az első 1000 találatot sorolja fel az eszköz.
    • Csere: a csereszöveg JavaScript-szintaxist használ: $1 vagy $2 a számozott csoportokhoz, $<name> a névvel ellátottakhoz, $& a teljes találathoz, $$ pedig egy szó szerinti dollárjelhez. A g flag nélkül csak az első találat cserélődik.
    • Magyarázat: a mintát elemekre bontja az eszköz (szó szerinti szöveg, karakterosztályok, horgonyok, csoportok, kvantorok, lookaroundok, visszahivatkozások), mindegyikhez rövid leírással. A beágyazott csoportok beljebb vannak húzva, ami sokkal könnyebbé teszi a hosszú minták áttekintését.

    A flagek röviden

    Flag Hatás
    g Minden találatot megkeres, nem áll meg az elsőnél
    i Figyelmen kívül hagyja a kis- és nagybetű közti különbséget
    m A ^ és a $ minden sor elején, illetve végén illeszkedik
    s A . a sortöréseket is illeszti
    u Teljes Unicode-mód: a \u{…}, a \p{…} és az emojik egyetlen karakterként kezelve
    y Sticky: minden találatnak pontosan ott kell kezdődnie, ahol az előző véget ért

    Katasztrofális visszalépés

    Egyes minták exponenciális ideig futnak a majdnem illeszkedő szövegen. A klasszikus példa a (a+)+$ egy hosszú a-sorozaton, amelyet egy b követ: a motor a feladás előtt kipróbálja az a-k összes lehetséges felosztását a két kvantor között. Ezt a ReDoS néven ismert problémát már valódi weboldalak is megsínylették.

    Az eszköz háromféleképpen védi a böngésződet. Az illesztés háttérszálban fut, amelyet 1,5 másodperc után leállít; a tesztszöveg legfeljebb 100 000 karakter lehet; a magyarázat pedig figyelmeztet, ha egy ismételt csoport egy másik, nyitott végű kvantort tartalmaz. Ha egy minta időtúllépést okoz, írd át úgy, hogy minden karaktert csak egyféleképpen lehessen illeszteni, például a+$ a (a+)+$ helyett.

    Gyakori kérdések

    Melyik regex-változatot használja az eszköz?

    A böngésződ JavaScript (ECMAScript) motorját, pontosan úgy, ahogyan a new RegExp() és a String.prototype.replace() működne a kódodban. A szintaxis nagy része közös a PCRE-vel, a Pythonnal és a Javával, de néhány funkció eltér: a birtokló kvantorok és az atomi csoportok nem léteznek JavaScriptben, a lookbehindot pedig minden mai böngésző támogatja.

    Miért talál a mintám csak egy találatot?

    Mert a g flag ki van kapcsolva. Nélküle a JavaScript az első találat után megáll, és a csere is csak azt az egyet módosítja.

    Hogyan illesszek szó szerinti pontot, szögletes zárójelet vagy kérdőjelet?

    Escape-eld fordított perjellel: \., \[, \?. A magyarázat az escape-elt karaktereket „(escape-elve)” felirattal mutatja, így ellenőrizheted.

    Elküldésre kerül valahová a szövegem?

    Nem. A minta és a szöveg feldolgozása kizárólag a böngésződben történik, így az eszköz biztonságosan használható naplófájlokhoz és személyes adatokat tartalmazó adatokhoz is.

    Miért tér el a pozíció a szerkesztőm oszlopszámától?

    A pozíciók 0-tól számolják a karaktereket az összes soron át, ahogyan a JavaScript match.index értéke is. A sortörés egy karakternek számít, az alap többnyelvű síkon kívüli emoji pedig kettőnek.