CodeKitHub
Textverktyg

Regex-testare online

Senast uppdaterad:

En regex-testare låter dig skriva ett reguljärt uttryck och se det matcha mot riktig text direkt, med fångstgrupper och flaggor synliga medan du skriver — den här kör JavaScript-motorn som beskrivs i MDN:s guide till reguljära uttryck, samma syntax som används av Node.js och alla webbläsare. Perfekt för att bygga och felsöka mönster innan de sätts in i kod.

//

    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

    1. Skriv ditt mönster mellan de två /-tecknen (du behöver inte escapa snedstreck själv).
    2. Justera flaggor i den lilla rutan efter det andra /-tecknet — standardflaggan g hittar alla träffar.
    3. Klistra in din testtext nedanför.
    4. Träffar markeras direkt; fångstgrupper listas under.
    5. 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.com

    Resultat

    ✓ 2 träffar
    #1 grupper: $1=alice  $2=example
    #2 grupper: $1=bob  $2=test

    Parenteserna 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.

    Textjämförelse · JSON-formaterare

    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.

    Relaterade verktyg