Så gör du
Så testar du ett regex utan att installera något
Du skrev ett mönster och behöver veta om det faktiskt matchar det du förväntar dig innan du lägger in det i koden. Att installera ett skrivbordsverktyg eller klistra in en privat logg på en slumpmässig webbplats är överdrivet, och ofta riskabelt. Den här guiden visar hur du kör ett regex mot din egen text direkt i webbläsaren, växlar flaggorna som ändrar beteendet, läser fångstgrupperna det plockar ut och ser matchningarna markeras på plats, utan att mönstret eller texten någonsin lämnar din flik.
Steg för steg
- Öppna regextestaren och skriv ditt mönster i fältet mellan de två snedstrecken. Du skriver inte snedstrecken själv: verktyget visar dem så att du ser mönstret på det sätt en motor läser det. Klistra in din exempeltext i rutan nedanför, till exempel några loggrader, en e-postlista eller ett kodblock du vill söka i.

- Ställ in flaggorna i den lilla rutan bredvid mönstret. Flaggan g hittar varje matchning i stället för att stanna vid den första; i gör matchningen skiftlägesokänslig; m låter ankarna ^ och $ matcha början och slutet av varje rad i stället för hela texten; s låter punkten matcha radbrytningar också. Kombinera dem fritt, till exempel gim.
- Tryck på Testa. Varje matchning markeras direkt i din text, och listan nedanför visar varje matchning med dess position och värdet för varje fångstgrupp. Justera mönstret och kör igen: förhandsvisningen uppdateras så att du kan smalna av mönstret tills det fångar exakt det du menade och ingenting annat.

Fångstgrupper, namngivna och numrerade
En fångstgrupp är den del av ditt mönster som omsluts av parenteser, och det är så du plockar ut en bit ur varje matchning i stället för att bara bekräfta att helheten matchade. Numrerade grupper räknas från vänster till höger efter sin öppningsparentes: i (\d{4})-(\d{2})-(\d{2}) är grupp 1 året, grupp 2 månaden, grupp 3 dagen. Namngivna grupper använder syntaxen (?<name>...), så (?<year>\d{4}) läses mycket bättre än ett bart nummer när mönstret växer. Om du bara vill gruppera utan att fånga, till exempel för att tillämpa en kvantifierare på flera tecken, använd en icke-fångande grupp (?:...) så att den inte trängar ihop din resultatlista. Testaren visar värdet för varje grupp för varje matchning, vilket är det snabbaste sättet att bekräfta att du extraherar rätt bit.
När ett mönster hänger sig eller beter sig illa
Två problem dyker upp gång på gång. Det första är katastrofal backtracking: ett mönster som (a+)+$ kört mot en lång sträng som inte matchar kan få motorn att prova ett exponentiellt antal vägar och frysa. Testaren kör varje test i en Web Worker med en kort vakthund, så i stället för en hängd flik får du ett tydligt meddelande och kan förenkla mönstret, vanligtvis genom att göra en kvantifierare possessiv i anda, förankra den eller undvika nästlad upprepning. Det andra är girig kontra lat matchning: som standard tar .* så mycket den kan, så för att matcha innehållet i en enda HTML-tagg vill du ha den lata formen .*? i stället. Om du jämför två något olika versioner av en sträng för att se vad ditt mönster ska sikta på, ställer textdiffverktyget upp dem så att skillnaden blir uppenbar innan du skriver uttrycket.
Hur webbläsaren utvärderar ditt regex
Moderna webbläsare levereras med en inbyggd ECMAScript regex-motor som stöder hela flagguppsättningen: skiftlägesokänslig matchning (i), flerradersläge (m), dotAll (s), Unicode (u) och klisterflaggan (y). När du skriver ett mönster i testaren kompilerar motorn det till en intern NFA och utvärderar det mot din teststräng i realtid, och rapporterar varje matchningsposition och eventuella fångstgrupper. Backtracking sker lokalt på din CPU: ett mönster som (a+)+ på en lång icke-matchande sträng kan snurra i sekunder, och att se den stopp i webbläsaren är användbar feedback innan du distribuerar mönstret i produktionskod. Ingen text lämnar sidan, så du kan klistra in loggexempel eller valfri indata utan att dirigera den via en tredjepartsserver.
Verktygen som används i den här guiden
Vanliga frågor
Skickas mitt mönster eller min testtext till en server?
Nej. Regexet körs inuti en Web Worker i din egen webbläsare, så mönstret och texten du testar mot stannar i fliken. Det här spelar roll eftersom texten du klistrar in ofta är en verklig logg, en kundlista eller en intern konfiguration, precis den sortens data du inte vill ha på någon annans server. Öppna Nätverkspanelen i dina utvecklarverktyg medan du trycker på Testa, så ser du ingen begäran som bär ut din text. Det fortsätter också fungera offline när sidan väl har laddats.
Vilken regexvariant använder testaren?
Den använder den reguljära uttrycksmotor för JavaScript som är inbyggd i din webbläsare, samma som kör i Node.js och på vilken webbsida som helst. Det täcker den vanliga syntaxen: teckenklasser, kvantifierare, ankare, alternering, numrerade och namngivna fångstgrupper, framåtblick och bakåtblick. Några funktioner från andra varianter, såsom rekursion i Perl-stil eller possessiva kvantifierare, ingår inte i JavaScript-motorn, så om ett mönster du kopierade från ett PHP- eller Python-projekt beter sig annorlunda är den skillnaden i variant oftast orsaken.