Hvad er dette værktøj?
Et regulært udtryk (regex) er et kompakt mønstersprog til at finde, validere og udtrække tekst: et e-mail-mønster kan validere formularinput, \d{4}-\d{2}-\d{2} finder datoer, og opsamlingsgrupper trækker de dele ud, du har brug for. Næsten ethvert programmeringssprog og editor understøtter regex.
Denne tester bruger JavaScripts regex-motor — den samme, der kører i Node.js og enhver browser — så mønstre, du bygger her, opfører sig identisk i din JavaScript-/TypeScript-kode. De fleste mønstre virker også uændret i Python, Java og Go.
Hvorfor bruge det?
- Live feedback: matches fremhæves med gult, mens du skriver mønsteret.
- Opsamlingsgrupper vist pr. match — se præcis, hvad $1 og $2 vil indeholde.
- Fuld understøttelse af flag: g (alle matches), i (ignorer store/små bogstaver), m (flere linjer), s (punktum matcher linjeskift), u (unicode).
- Klare fejlmeddelelser, når mønsteret har en syntaksfejl.
- Gratis og privat — mønster og tekst forlader aldrig din browser.
Sådan bruger du det
- Skriv dit mønster mellem de to /-tegn (ingen grund til selv at undslippe skråstreger).
- Justér flag i den lille boks efter det andet / — standarden g finder alle matches.
- Indsæt din testtekst nedenfor.
- Matches fremhæves med det samme; opsamlingsgrupper vises nedenunder.
- Hvis mønsteret er ugyldigt, forklarer fejlmeddelelsen, hvad der er galt.
Eksempel
Input
Mønster: (\w+)@(\w+)\.com
Teststreng: Kontakt alice@example.com eller bob@test.comOutput
✓ 2 matches
#1 grupper: $1=alice $2=example
#2 grupper: $1=bob $2=testParenteserne opretter opsamlingsgrupper, du kan referere til som $1 og $2 i erstatninger.
Praktiske tips
- Validerer du et e-mail-input? ^[^\s@]+@[^\s@]+\.[^\s@]+$ er et tilgivende mønster, der fanger åbenlyse tastefejl uden at afvise gyldige-men-usædvanlige adresser — fuld overensstemmelse med RFC 5322 kræver et bibliotek, ikke en one-liner.
- Udtrækning af forespørgselsparametre fra en URL: [?&]([^=]+)=([^&]*) med g-flaget, og læs derefter $1/$2 pr. match i stedet for at splitte manuelt på & og =.
- Skal du bruge et mønster i .replace()? Test det her først — det, der fremhæves, er præcis, hvad .replace() vil røre ved, opsamlingsgrupper inkluderet.
- Parser du flerlinjede logs (matcher et tidsstempel i starten af hver linje)? Tilføj m-flaget, så ^ og $ ankrer pr. linje i stedet for hele strengen.
- Kopierede du et mønster fra Python eller PHP, og det matcher ikke her? Tjek for (?P<navn>...)-navngivne grupper — JavaScript bruger (?<navn>...), uden P — eller possessive kvantorer (++, *+), som ikke findes i JavaScript-regex.
En JavaScript-regex-tester, ikke en generisk én
Dette værktøj kører JavaScripts indbyggede RegExp-motor — nøjagtig den kodesti, der ligger bag str.match(pattern) eller pattern.test(str) i en browserkonsol eller Node.js. Det er anderledes end at teste mod PCRE (hvad PHP bruger, og hvad mange "universelle" regex-testere som standard bruger) eller Pythons re-modul: JavaScript har ingen possessive kvantorer eller atomiske grupper, og navngivne opsamlingsgrupper bruger (?<navn>...) i stedet for PCRE/Pythons (?P<navn>...).
Skal du snart ud med et mønster i JS eller TypeScript — formularvalidering, en route-matcher, en logparser — betyder det at teste det her nul afvigelse: det, der fremhæves på denne side, er præcis, hvad new RegExp(pattern, flags) matcher under kørsel.
Hvor dette passer ind i den virkelige verden
En regex-test står sjældent alene. Den sædvanlige rækkefølge: bekræft mønsteret her, kør den faktiske .replace() i din kode, og diff derefter før/efter-teksten for at sikre, at erstatningen gjorde, hvad du forventede, og intet andet.
Udtrækning af struktureret data med opsamlingsgrupper fører ofte direkte videre til JSON — formatér det udtrukne output for at tjekke, at det blev fortolket, som du forventede.
Ofte stillede spørgsmål
Hvilken regex-variant bruger denne tester?
JavaScript (ECMAScript), motoren i enhver browser og Node.js. Kernesyntaksen er portabel, men nogle funktioner adskiller sig mellem sprog — f.eks. varierer understøttelse af lookbehind og syntaks for navngivne grupper i Python og Java.
Hvorfor finder mit mønster kun det første match?
g-flaget (global) mangler. Uden g stopper en regex efter det første match. Dette værktøj bruger g som standard — tjek at du ikke har fjernet det.
Hvorfor matcher . ikke mine linjeskift?
Som standard matcher . ethvert tegn undtagen linjeskift. Tilføj s-flaget (dotall) for at få . til også at matche linjeskift, eller brug [\s\S] som et portabelt alternativ.
Hvad betyder resultaterne af opsamlingsgrupperne?
Hvert par parenteser i dit mønster opsamler den tekst, det matchede. $1 er den første gruppe, $2 den anden, og så videre — dette er, hvad du refererer til i erstatningsoperationer og udtrækningskode.
Hvorfor er min regex langsom eller fryser den?
Sandsynligvis katastrofal backtracking, forårsaget af indlejrede kvantorer som (a+)+ på ikke-matchende input. Omskriv mønsteret for at undgå tvetydig gentagelse. Dette værktøj sætter loft ved 1000 matches for at forblive responsivt.