Regex-tester
Test een reguliere expressie in JavaScript op je tekst en zie alle overeenkomsten en vanggroepen, in je browser.
Draait volledig in je browser. Er wordt niets geüpload, gelogd of opgeslagen.
Gemarkeerd
| # | Overeenkomst | Positie | Groepen |
|---|
Typ een patroon, plak de tekst waarop het zou moeten matchen en zie meteen wat het vangt en wat het mist, met elke vanggroep uitgesplitst.
Hoe het werkt
Het patroon wordt door je browser gecompileerd en op de tekst uitgevoerd terwijl je typt. Wat je ziet is precies wat dezelfde expressie in JavaScript doet, want het is dezelfde engine.
Met de flag g worden alle overeenkomsten getoond; zonder alleen de eerste. De flag i negeert het verschil tussen hoofdletters en kleine letters, m laat ^ en $ matchen op regelgrenzen, s laat de punt ook een regeleinde matchen, u zet de Unicode-modus aan en y verankert de zoekactie op de laatste index.
Genummerde vanggroepen verschijnen op volgorde; een groep geschreven als (?<naam>...) wordt met zijn naam getoond.
Voorbeelden
| Geval | Invoer | Resultaat |
|---|---|---|
| Een ISO-datum, opgesplitst in zijn delen | (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) | jaar, maand en dag als benoemde groepen |
| Alle hashtags in een bericht | #\w+ | één overeenkomst per hashtag, met de flag g |
Veelgestelde vragen
Welke variant van reguliere expressies is dit?
Die van JavaScript, zoals je browser die implementeert. PCRE, dat PHP en grep -P gebruiken, en RE2, dat Go gebruikt, verschillen in lookbehind, possessieve kwantoren en Unicode-property-escapes. Dat een patroon hier werkt, garandeert niet dat het daar werkt.
De pagina liep vast terwijl ik een patroon typte.
Sommige patronen backtracken catastrofaal op bepaalde teksten: geneste kwantoren zoals (a+)+ zijn het klassieke geval. Het zoeken over de hele tekst is begrensd en geeft het op met een waarschuwing, maar één enkele match die op hol slaat, kan door niets op de pagina worden onderbroken: JavaScript kan een reguliere expressie niet stoppen als die eenmaal loopt. Herlaad het tabblad en zie het als een vondst en niet als een ongeluk: dezelfde expressie op een server zou een proces platleggen.
Moet ik de slashes meetypen?
Nee. Typ alleen het patroon en zet de flags in het flagsveld. Plak je /abc/gi als patroon, dan worden de slashes deel van wat je zoekt.
Wordt mijn testtekst ergens naartoe gestuurd?
Nee, en hij wordt bovendien bewust buiten de deellink gehouden. De link kopiëren deelt het patroon en de flags, nooit de tekst waarop je hebt getest.
Goed om te weten
- Patronen worden nooit op de server uitgevoerd. Een door een bezoeker aangeleverde expressie die slecht backtrackt, zou daar een denial of service zijn; in een tabblad kost hij niet meer dan dat tabblad.