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.
| # | Pozíció | Találat | Csoportok |
|---|
A minta magyarázata
Figyelem: egy ismételt csoport egy másik, nyitott végű kvantort tartalmaz, például (a+)+. Az ilyen minták a majdnem illeszkedő szövegen exponenciális ideig futhatnak (katasztrofális visszalépés).
Hogyan használd a regex-tesztert
- Í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/galakban. - Jelöld be a szükséges Flageket:
g(global),i(kis- és nagybetű egyenlő),m(multiline),s(dotAll),u(unicode) vagyy(sticky). - 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.
- 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.
- 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:
$1vagy$2a számozott csoportokhoz,$<name>a névvel ellátottakhoz,$&a teljes találathoz,$$pedig egy szó szerinti dollárjelhez. Agflag 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.
Kapcsolódó eszközök
- JSON formázó és validátor Ingyenes JSON formázó és validátor, amely a böngésződben szépít, tömörít és ellenőriz JSON-t, a szintaxishibákat sor és oszlop szerint jelezve.
- URL-kódoló és -dekódoló Ingyenes URL-kódoló és -dekódoló: kódolj paramétereket vagy teljes URL-eket, fejtsd vissza a %XX sorozatokat, és kezeld a + jelet szóközként. Böngészőben fut.
- Hash generátor Generálj MD5, SHA-1, SHA-256 és SHA-512 hasheket szövegből vagy bármekkora fájlból, és ellenőrizd az ellenőrző összegeket. Minden a böngésződben fut.