← Alla verktyg

Regex-testare

Bygg, testa och felsök reguljära uttryck live mot din egen text i webbläsaren. Lär dig teckenklasser, kvantifierare, ankare, grupper och flaggor.

Regex Tester: bygg och felsök mönster mot din egen text

Ett reguljärt uttryck är ett litet språk för att beskriva textens form. Istället för att fråga "finns exakt det här ordet här?" låter en regex dig fråga "finns det en sträng som ser ut så här?" Det är vad som gör den kraftfull för att hitta, validera, extrahera och ersätta text i kodredigerare, loggfiler, formulärinmatningar och skript. Det är också vad som gör den lätt att göra fel, eftersom ett mönster som ser bra ut i huvudet tyst kan matcha för mycket, för lite eller ingenting alls.

Det är därför interaktiv testning slår gissningar. När du skriver ett mönster och ser matchningar lysa upp över verklig exempeltext får du direkt återkoppling: du ser vad som fångades, vad som slank igenom och vilken fångstgrupp som grep vilken del. Vår Regex Tester körs helt i din webbläsare. Ditt mönster och din exempeltext lämnar aldrig sidan, så du kan klistra in loggrader, e-postmeddelanden eller produktionsdata utan att skicka något till en server.

Lysande cyanfilter som fångar specifika gyllene tokens från en flödande dataström på en mörk indigobakgrund
En regex fungerar som ett filter, väljer bara ut de tokens som matchar ditt mönster.

Byggstenarna värda att känna till

De flesta vardagsmönster byggs av en liten uppsättning delar. Lär dig dessa så kan du läsa majoriteten av de regexer du möter ute i verkligheten.

Teckenklasser beskriver en uppsättning tillåtna tecken. [aeiou] matchar valfri enskild vokal, [0-9] matchar en siffra, och [a-zA-Z] matchar en bokstav. Ett cirkumflex-tecken inuti hakparenteserna negerar mängden, så [^0-9] betyder "vilket tecken som helst som inte är en siffra". Förkortningar sparar tid: \d är en siffra, \w är ett ordtecken (bokstäver, siffror, understreck), \s är blanktecken, och punkten . matchar nästan vilket enskilt tecken som helst.

Kvantifierare anger hur många gånger föregående del får upprepas. * betyder noll eller fler, + betyder en eller fler, och ? betyder noll eller en (valfritt). För exakta antal betyder {3} exakt tre och {2,4} betyder två till fyra. Så \d{4} matchar ett fyrsiffrigt årtal och colou?r matchar båda stavningarna.

Ankare fäster ett mönster till en position snarare än ett tecken. ^ matchar textens början, $ matchar slutet, och \b markerar en ordgräns. Mönstret ^Error matchar bara rader som börjar med "Error", vilket är precis vad du vill när du skannar loggar.

Grupper omsluter en del av ett mönster i parenteser, både för att applicera en kvantifierare på flera tecken samtidigt och för att fånga den matchade texten för återanvändning. I (\d{4})-(\d{2})-(\d{2}) fångar varje grupp en datumkomponent du kan hämta ut senare. Alternering med rörledningstecknet fungerar som "eller": cat|dog|fish matchar vilket som helst av de tre orden.

Mönster du faktiskt kommer att använda

Ett fåtal återkommande uppgifter täcker det mesta av verkligt arbete. För att fånga något e-postliknande är [\w.+-]+@[\w-]+\.[\w.-]+ en pragmatisk utgångspunkt; fullständig e-postvalidering enligt den formella specifikationen är notoriskt krånglig, och ett löst mönster är oftast rätt val för att markera kandidater snarare än att avvisa användare.

För tal fångar \d+ löpande siffror, medan -?\d+(\.\d+)? matchar valfria negativa tal och decimaler. För att trimma inledande och avslutande blanktecken, matcha ^\s+|\s+$ och ersätt det med ingenting. För att hitta duplicerade ord matchar backreferens-mönstret \b(\w+)\s+\1\b ett ord följt av sig själv, där \1 refererar tillbaka till den första fångade gruppen.

Utvalda ord som lyser gyllene och markeras inom en flödande flod av cyanfärgade textliknande partiklar på mörk navy
Live-markering visar exakt vilka delar av din text ett mönster matchar.

Flaggor ändrar hur matchning beter sig

Flaggor är brytare som modifierar hela mönstret. Global-flaggan (g) hittar varje matchning istället för att stanna vid den första, vilket är vad du vill när du markerar alla förekomster. Flaggan skiftlägesokänslig (i) gör att error matchar både "Error" och "ERROR". Flaggan flerradig (m) ändrar ^ och $ så att de matchar i början och slutet av varje rad, inte bara i hela texten, vilket är avgörande för radbaserat loggarbete. Andra användbara flaggor inkluderar s (dotall, låter punkten matcha radbrytningar) och u för fullständig Unicode-hantering.

Dialekter skiljer sig lite mellan språk

Regex är en familj av dialekter, inte en fast standard. JavaScript, Python, PCRE (PHP), Java, .NET, Go och Rust är överens om kärnsyntaxen ovan, men de skiljer sig i kanterna: stöd för lookbehind, syntax för namngivna grupper ((?<name>...) kontra (?P<name>...)), Unicode-egenskapsescapes, och vilka flaggor som finns varierar allt. Ett mönster som fungerar i en motor kan behöva en liten justering i en annan, så det lönar sig att testa mot den dialekt du faktiskt levererar med. När du har ett mönster inställt kan våra andra utvecklarverktyg och textverktyg hjälpa till med det kringliggande arbetet att rensa, koda och omvandla datan du just matchat.

Vanliga frågor

Skickas min text till en server?

Nej. Regex Tester körs helt i din webbläsare. Ditt mönster och exempeltext stannar på din enhet och laddas aldrig upp, så det är säkert att klistra in känslig data.

Vilken regex-dialekt använder det här verktyget?

Det använder JavaScript-regexmotorn inbyggd i din webbläsare. Kärnsyntaxen matchar det du känner igen från de flesta språk, även om vissa avancerade funktioner skiljer sig något från PCRE, Python eller .NET.

Vad är skillnaden mellan girig och lat matchning?

Som standard är kvantifierare giriga och fångar så mycket text som möjligt. Att lägga till ett frågetecken gör dem lata, så de fångar så lite som möjligt. Till exempel är mönstret punkt-stjärna girigt medan punkt-stjärna-frågetecken är lat.

Hur matchar jag ett bokstavligt specialtecken?

Escapea det med ett omvänt snedstreck. För att matcha en verklig punkt, skriv omvänt snedstreck följt av punkt. Detsamma gäller andra metatecken som parenteser, hakparenteser, plustecknet och frågetecknet.

Varför matchar mitt mönster ingenting?

Vanliga orsaker är en saknad global-flagga, ankare som fäster matchningen på fel position, ett oescapat specialtecken, eller giriga kvantifierare som överskrider gränsen du förväntade dig. Testa del för del för att hitta boven.

Kan jag fånga delar av matchningen?

Ja. Omslut en del av mönstret med parenteser för att skapa en fångstgrupp. Varje grupp rapporteras separat, vilket låter dig extrahera fält som år, månad och dag från ett datum.