Hva er dette verktøyet?
Et regulært uttrykk (regex) er et kompakt mønsterspråk for å finne, validere og trekke ut tekst: et e-postmønster kan validere skjemainndata, \d{4}-\d{2}-\d{2} finner datoer, og fangstgrupper trekker ut de delene du trenger. Nesten alle programmeringsspråk og redigeringsverktøy støtter regex.
Denne testeren bruker JavaScripts regex-motor — den samme som kjører i Node.js og alle nettlesere — så mønstre du bygger her fungerer identisk i JavaScript/TypeScript-koden din. De fleste mønstre fungerer også uendret i Python, Java og Go.
Hvorfor bruke det?
- Live tilbakemelding: treff markeres i gult mens du skriver mønsteret.
- Fangstgrupper vises per treff — se nøyaktig hva $1 og $2 vil inneholde.
- Full flaggstøtte: g (alle treff), i (ignorer store/små bokstaver), m (flerlinje), s (punktum matcher linjeskift), u (unicode).
- Tydelige feilmeldinger når mønsteret har en syntaksfeil.
- Gratis og privat — mønster og tekst forlater aldri nettleseren din.
Slik bruker du det
- Skriv mønsteret ditt mellom de to /-tegnene (ingen behov for å escape skråstreker selv).
- Juster flagg i den lille boksen etter det andre /-tegnet — standarden g finner alle treff.
- Lim inn testteksten din nedenfor.
- Treff markeres umiddelbart; fangstgrupper listes opp under.
- Hvis mønsteret er ugyldig, forklarer feilmeldingen hva som er galt.
Eksempel
Inndata
Mønster: (\w+)@(\w+)\.com
Testtekst: Kontakt alice@example.com eller bob@test.comResultat
✓ 2 treff
#1 grupper: $1=alice $2=example
#2 grupper: $1=bob $2=testParentesene lager fangstgrupper du kan referere til som $1 og $2 i erstatninger.
Praktiske tips
- Validerer du en e-post-inndata? ^[^\s@]+@[^\s@]+\.[^\s@]+$ er et tolerant mønster som fanger opp åpenbare skrivefeil uten å avvise gyldige, men uvanlige adresser — full RFC 5322-samsvar krever et bibliotek, ikke en enkeltlinje.
- Trekke ut spørreparametre fra en URL: [?&]([^=]+)=([^&]*) med g-flagget, og les deretter $1/$2 per treff i stedet for å dele manuelt på & og =.
- Skal du bruke et mønster i .replace()? Test det her først — det som markeres er nøyaktig det .replace() vil berøre, inkludert fangstgrupper.
- Analyserer du flerlinjelogger (matcher et tidsstempel i starten av hver linje)? Legg til m-flagget slik at ^ og $ ankrer per linje i stedet for hele strengen.
- Kopierte du et mønster fra Python eller PHP, og det matcher ikke her? Sjekk om det bruker (?P<navn>...) navngitte grupper — JavaScript bruker (?<navn>...), uten P — eller possessive kvantorer (++, *+), som ikke finnes i JavaScript-regex.
En JavaScript-regex-tester, ikke en generisk en
Dette verktøyet kjører JavaScripts innebygde RegExp-motor — den nøyaktige kodebanen bak str.match(mønster) eller mønster.test(str) i en nettleserkonsoll eller Node.js. Det er annerledes enn å teste mot PCRE (som PHP bruker, og som mange «universelle» regex-testere har som standard) eller Python sin re-modul: JavaScript har ingen possessive kvantorer eller atomiske grupper, og navngitte fangstgrupper bruker (?<navn>...) i stedet for PCRE/Pythons (?P<navn>...).
Skal du snart bruke et mønster i JS eller TypeScript — skjemavalidering, en rutematcher, en loggparser — betyr testing her at det blir null avvik: det som markeres på denne siden er nøyaktig det new RegExp(mønster, flagg) matcher ved kjøring.
Hvor dette passer inn i ekte arbeidsflyter
En regex-test skjer sjelden alene. Den vanlige sekvensen: bekreft mønsteret her, kjør den faktiske .replace() i koden din, og sammenlign deretter teksten før/etter for å sikre at erstatningen gjorde det du forventet og ikke noe mer.
Å trekke ut strukturert data med fangstgrupper går ofte rett videre til JSON — formater det uttrukne resultatet for å sjekke at det ble tolket slik du forventet.
Ofte stilte spørsmål
Hvilken regex-variant bruker denne testeren?
JavaScript (ECMAScript), motoren i alle nettlesere og Node.js. Kjernesyntaksen er overførbar, men enkelte funksjoner skiller seg mellom språk — f.eks. varierer støtte for lookbehind og navngitt gruppe-syntaks i Python og Java.
Hvorfor finner mønsteret mitt bare det første treffet?
g-flagget (global) mangler. Uten g stopper et regex-uttrykk etter første treff. Dette verktøyet bruker g som standard — sjekk at du ikke har fjernet det.
Hvorfor matcher ikke . linjeskiftene mine?
Som standard matcher . ethvert tegn unntatt linjeskift. Legg til s-flagget (dotall) for å få . til å matche linjeskift også, eller bruk [\s\S] som et overførbart alternativ.
Hva betyr resultatene for fangstgruppene?
Hvert parentespar i mønsteret ditt fanger teksten det matchet. $1 er den første gruppen, $2 den andre, og så videre — dette er det du refererer til i erstatnings- og uttrekkskode.
Hvorfor er regex-uttrykket mitt tregt eller fryser?
Sannsynligvis katastrofal tilbakesporing, forårsaket av nøstede kvantorer som (a+)+ på tekst som ikke matcher. Skriv om mønsteret for å unngå tvetydig repetisjon. Dette verktøyet setter et tak på 1000 treff for å holde seg responsivt.