Mi ez az eszköz?
A reguláris kifejezés (regex) egy tömör mintanyelv szöveg kereséséhez, validálásához és kinyeréséhez: egy e-mail-minta validálhat egy űrlapmezőt, a \d{4}-\d{2}-\d{2} dátumokat talál, és a capture groupok kihúzzák a szükséges részeket. Szinte minden programnyelv és szerkesztő támogatja a regexet.
Ez a tesztelő a JavaScript regex motort használja — ugyanazt, amely a Node.js-ben és minden böngészőben fut —, így az itt épített minták pontosan ugyanúgy viselkednek a JavaScript/TypeScript kódodban. A legtöbb minta változatlanul működik Pythonban, Java-ban és Go-ban is.
Miért érdemes használni?
- Élő visszajelzés: az egyezések sárgával kiemelődnek, ahogy gépeled a mintát.
- A capture groupok egyezésenként megjelennek — pontosan láthatod, mit fog tartalmazni a $1 és a $2.
- Teljes flag támogatás: g (összes egyezés), i (kis/nagybetű figyelmen kívül hagyása), m (többsoros), s (a pont illeszkedik az újsorra is), u (unicode).
- Világos hibaüzenetek, ha a mintában szintaktikai hiba van.
- Ingyenes és privát — a minta és a szöveg soha nem hagyja el a böngésződet.
Használati útmutató
- Írd be a mintádat a két / karakter közé (nem kell magadnak escape-elned a perjeleket).
- Állítsd be a flageket a második / utáni kis mezőben — az alapértelmezett g minden egyezést megtalál.
- Illeszd be a teszt szövegedet alább.
- Az egyezések azonnal kiemelődnek; a capture groupok alul kerülnek felsorolásra.
- Ha a minta érvénytelen, a hibaüzenet elmagyarázza, mi a probléma.
Példa
Bemenet
Minta: (\w+)@(\w+)\.com
Teszt szöveg: Elérhetőség: alice@example.com vagy bob@test.comKimenet
✓ 2 egyezés
#1 groupok: $1=alice $2=example
#2 groupok: $1=bob $2=testA zárójelek capture groupokat hoznak létre, amelyekre $1 és $2 formában hivatkozhatsz cserékben.
Gyakorlati tippek
- E-mail beviteli mezőt validálsz? A ^[^\s@]+@[^\s@]+\.[^\s@]+$ egy megengedő minta, amely elkapja a nyilvánvaló elgépeléseket, anélkül hogy elutasítaná az érvényes, de szokatlan címeket — a teljes RFC 5322 megfelelőséghez könyvtár kell, nem egysoros kifejezés.
- Lekérdezési paraméterek kinyerése egy URL-ből: [?&]([^=]+)=([^&]*) a g flaggel, majd olvasd ki a $1/$2-t egyezésenként ahelyett, hogy kézzel bontanál a & és = mentén.
- Egy mintát fogsz használni a .replace()-ben? Teszteld itt előbb — amit kiemel, pontosan az, amit a .replace() módosítani fog, a capture groupokat is beleértve.
- Többsoros naplókat elemzel (egy időbélyeg illesztése minden sor elején)? Add hozzá az m flaget, hogy a ^ és $ soronként horgonyozzon, ne a teljes szövegre.
- Egy mintát másoltál Pythonból vagy PHP-ből, és itt nem illeszkedik? Ellenőrizd a (?P<name>...) nevezett groupokat — a JavaScript a (?<name>...) formát használja, P nélkül —, vagy a birtokos mennyiségjelölőket (++, *+), amelyek nem léteznek a JavaScript regexben.
JavaScript regex tesztelő, nem egy általános
Ez az eszköz a JavaScript beépített RegExp motorját futtatja — pontosan azt a kódútvonalat, amely a str.match(pattern) vagy a pattern.test(str) mögött áll egy böngészőkonzolban vagy Node.js-ben. Ez különbözik a PCRE-vel (amit a PHP használ, és amelyre sok "univerzális" regex tesztelő alapértelmezetten épít) vagy a Python re moduljával szembeni teszteléstől: a JavaScriptben nincsenek birtokos mennyiségjelölők vagy atomi groupok, és a nevezett capture groupok a (?<name>...) formát használják a PCRE/Python (?P<name>...) formája helyett.
Ha egy mintát készülsz JS-be vagy TypeScriptbe elküldeni — űrlapvalidálás, útvonal-illesztő, naplóelemző —, itt tesztelve nulla eltérés lesz a viselkedésben: amit ez az oldal kiemel, pontosan az, amire a new RegExp(pattern, flags) futásidőben illeszkedik.
Hol illeszkedik ez a valós munkafolyamatokba
Egy regex teszt ritkán áll önmagában. A szokásos sorrend: erősítsd meg itt a mintát, futtasd le a valódi .replace()-t a kódodban, majd hasonlítsd össze az előtte/utána szöveget, hogy megbizonyosodj róla, a csere pontosan azt tette, amit vártál, és semmi mást.
A capture groupokkal kinyert strukturált adatok gyakran közvetlenül JSON-ba kerülnek — formázd a kinyert kimenetet, hogy ellenőrizd, a várt módon dolgozódott-e fel.
Gyakori kérdések
Melyik regex-változatot használja ez a tesztelő?
A JavaScript (ECMAScript) motort, amely minden böngészőben és a Node.js-ben megtalálható. Az alapszintaxis hordozható, de néhány funkció eltér a nyelvek között — pl. a lookbehind támogatás és a nevezett group szintaxisa eltér Pythonban és Java-ban.
Miért csak az első egyezést találja meg a mintám?
Hiányzik a g (global) flag. A g nélkül a regex az első egyezés után leáll. Ez az eszköz alapértelmezetten g-t használ — ellenőrizd, hogy nem távolítottad-e el.
Miért nem illeszkedik a . a sortörésekre?
Alapértelmezetten a . bármilyen karakterre illeszkedik az újsorok kivételével. Add hozzá az s flaget (dotall), hogy a . az újsorokra is illeszkedjen, vagy használd a [\s\S]-t hordozható alternatívaként.
Mit jelentenek a capture group eredmények?
A mintádban minden zárójelpár rögzíti azt a szöveget, amire illeszkedett. A $1 az első group, a $2 a második, és így tovább — ezekre hivatkozol csere-műveletekben és kinyerő kódban.
Miért lassú vagy fagy le a regexem?
Valószínűleg katasztrofális visszalépés (backtracking), amelyet olyan beágyazott mennyiségjelölők okoznak, mint az (a+)+, nem illeszkedő bemeneten. Írd át a mintát a kétértelmű ismétlés elkerülésére. Ez az eszköz 1000 egyezésnél korlátozza a találatokat, hogy reszponzív maradjon.