Vad är detta verktyg?
Ett reguljärt uttryck (regex) är ett kompakt mönsterspråk för att hitta, validera och extrahera text: ett e-postmönster kan validera formulärinmatning, \d{4}-\d{2}-\d{2} hittar datum, och fångstgrupper plockar ut de delar du behöver. Nästan alla programmeringsspråk och editorer stöder regex.
Den här testaren använder JavaScripts regex-motor — samma motor som körs i Node.js och alla webbläsare — så mönster du bygger här beter sig identiskt i din JavaScript/TypeScript-kod. De flesta mönster fungerar även oförändrade i Python, Java och Go.
Varför använda det?
- Direkt återkoppling: träffar markeras i gult medan du skriver mönstret.
- Fångstgrupper visas per träff — se exakt vad $1 och $2 kommer att innehålla.
- Fullt stöd för flaggor: g (alla träffar), i (skiftlägesokänslig), m (flera rader), s (punkt matchar radbrytning), u (unicode).
- Tydliga felmeddelanden när mönstret har ett syntaxfel.
- Gratis och privat — mönster och text lämnar aldrig din webbläsare.
Så använder du det
- Skriv ditt mönster mellan de två /-tecknen (du behöver inte escapa snedstreck själv).
- Justera flaggor i den lilla rutan efter det andra /-tecknet — standardflaggan g hittar alla träffar.
- Klistra in din testtext nedanför.
- Träffar markeras direkt; fångstgrupper listas under.
- Om mönstret är ogiltigt förklarar felmeddelandet vad som är fel.
Exempel
Inmatning
Mönster: (\w+)@(\w+)\.com
Teststräng: Kontakta alice@example.com eller bob@test.comResultat
✓ 2 träffar
#1 grupper: $1=alice $2=example
#2 grupper: $1=bob $2=testParenteserna skapar fångstgrupper du kan referera till som $1 och $2 vid ersättningar.
Praktiska tips
- Validerar du en e-postinmatning? ^[^\s@]+@[^\s@]+\.[^\s@]+$ är ett tillåtande mönster som fångar uppenbara stavfel utan att avvisa giltiga men ovanliga adresser — full RFC 5322-efterlevnad kräver ett bibliotek, inte en rad kod.
- Extrahera frågeparametrar från en URL: [?&]([^=]+)=([^&]*) med g-flaggan, läs sedan $1/$2 per träff istället för att dela för hand på & och =.
- På väg att använda ett mönster i .replace()? Testa det här först — det som markeras är exakt vad .replace() kommer att röra, fångstgrupper inkluderade.
- Analyserar du loggar med flera rader (matchar en tidsstämpel i början av varje rad)? Lägg till flaggan m så att ^ och $ ankrar per rad istället för hela strängen.
- Kopierade du ett mönster från Python eller PHP och det matchar inte här? Kontrollera efter namngivna grupper (?P<name>...) — JavaScript använder (?<name>...), utan P — eller possessiva kvantifierare (++, *+), som inte finns i JavaScript-regex.
En JavaScript-regextestare, inte en generisk sådan
Det här verktyget kör JavaScripts inbyggda RegExp-motor — exakt samma kodväg som ligger bakom str.match(pattern) eller pattern.test(str) i en webbläsarkonsol eller Node.js. Det skiljer sig från att testa mot PCRE (vad PHP använder, och vad många "universella" regextestare använder som standard) eller Pythons re-modul: JavaScript saknar possessiva kvantifierare eller atomiska grupper, och namngivna fångstgrupper använder (?<name>...) istället för PCRE/Pythons (?P<name>...).
Om du är på väg att skicka ett mönster i JS eller TypeScript — formulärvalidering, en ruttmatchare, en loggparser — betyder det att testa det här ingen skillnad i variant: det som markeras på den här sidan är exakt vad new RegExp(pattern, flags) matchar vid körning.
Var det här passar in i verkliga arbetsflöden
Ett regextest står sällan för sig självt. Den vanliga sekvensen: bekräfta mönstret här, kör själva .replace() i din kod, och jämför sedan texten före/efter för att säkerställa att ersättningen gjorde vad du förväntade dig och inget annat.
Att extrahera strukturerad data med fångstgrupper leder ofta direkt in i JSON — formatera den extraherade utdatan för att kontrollera att den tolkades som du förväntade dig.
Vanliga frågor
Vilken regex-variant använder den här testaren?
JavaScript (ECMAScript), motorn i alla webbläsare och Node.js. Grundsyntaxen är portabel, men vissa funktioner skiljer sig mellan språk — till exempel varierar stöd för lookbehind och syntax för namngivna grupper i Python och Java.
Varför hittar mitt mönster bara den första träffen?
Flaggan g (global) saknas. Utan g stannar en regex efter första träffen. Det här verktyget använder g som standard — kontrollera att du inte tagit bort den.
Varför matchar inte . mina radbrytningar?
Som standard matchar . vilket tecken som helst utom radbrytningar. Lägg till flaggan s (dotall) för att få . att matcha radbrytningar också, eller använd [\s\S] som ett portabelt alternativ.
Vad betyder resultaten för fångstgrupper?
Varje par av parenteser i ditt mönster fångar den text den matchade. $1 är den första gruppen, $2 den andra, och så vidare — det är dessa du refererar till i ersättningsoperationer och extraheringskod.
Varför är min regex långsam eller fryser?
Troligen katastrofal backtracking, orsakad av kapslade kvantifierare som (a+)+ på icke-matchande indata. Skriv om mönstret för att undvika tvetydig upprepning. Det här verktyget begränsar till 1000 träffar för att förbli responsivt.