Gratis omvandlare

Regex Testare

Testa och felsök reguljära uttryck direkt i din webbläsare. Markera matchningar, visa inspelningsgrupper och använd ersättningsläge – gratis och privat.

//g
Flaggor:

Om detta verktyg

Reguljära uttryck är ett domänspecifikt språk för att matcha mönster i text. De har varit en del av datoranvändning sedan 1968 och är nu inbyggda i alla moderna programmeringsspråk, textredigerare och kommandoradssökverktyg. Syntaxen är kortfattad men felbenägen: små ändringar ger subtilt olika matchningsbeteende och komplexa uttryck blir snabbt oläsliga. En testare som visar matchningar i realtid när du redigerar mönstret är det mest effektiva sättet att utveckla och verifiera regex.

Den här testaren körs i din webbläsare med JavaScript-regex-motorn (samma som din applikation använder om den körs i en webbläsare). Mönster och testtext uppdateras reaktivt: varje ändring av någon av dem gör om matchen. Matchningsgrupper markeras, fångade grupper listas och flaggor (skiftlägeskänsliga, flerradiga, globala) exponeras för testning.

Regex-syntaxen varierar subtilt mellan motorerna. JavaScript följer ECMAScript-specifikationen; Python, PCRE (används av PHP och många andra), Java och Go har var och en sina egna dialekter med överlappande men inte identiska funktioner. Mönster som utvecklas här använder ECMAScript-syntax; crossmotor portabilitet kräver att varje måls dokumentation kontrolleras.

Varför använda en Regex-testare

Regex-buggar är notoriskt svåra att felsöka efter implementering. Ett mönster som ser rimligt ut kan matcha mer eller mindre än vad som är avsett, misslyckas på kantfodral eller ha katastrofal backtracking på vissa ingångar. Att testa mönster interaktivt mot representativ input fångar upp problem före kodgranskning och produktion.

Mönster drar också nytta av dokumentation. Att visa ett regex vid sidan av indata som det ska matcha och indata som det inte ska matcha gör avsikt explicit. Framtida underhållare (inklusive dig själv om sex månader) uppskattar dokumenterade testfall mer än de uppskattar smarta one-liners.

Så här använder du det

Skriv ett mönster, skriv testinmatning, se matcher markerade live.

  1. Ange ditt mönster: Skriv in det regex-mönstret i mönsterfältet. Både bokstavligt regex (/mönster/flaggor) och endast mönster fungerar; flaggor kan ställas in via flaggingången.
  2. Lägg till testingång: Klistra in exempeltext som mönstret ska matcha (och helst även text som det inte ska matcha). Testaren kör mönstret mot indata och markerar matchningar.
  3. Sätt flaggor: Vanliga flaggor: g (global, hitta alla matchningar), i (skiftlägeskänslig), m (flerlinje, ^ och $ matchlinje börjar/slutar), s (punktlinje, . matchar nyrader), u (Unicode).
  4. Inspektera resultaten: Varje match markeras i inmatningen. Fånga grupper visas i en lista med gruppindex och värde. Testaren visar också antalet matchningar och eventuella kompileringsfel i mönstret.

Vanliga användningsfall

Tekniska detaljer

JavaScript-regex följer ECMAScript-specifikationen. Huvudfunktioner: teckenklasser ([abc], [^abc]), kvantifierare (*, +, ?, {n,m}), alternering (|), gruppering ((...)), infångande och icke-fångande grupper, lookahead och lookbehind (moderna motorer), bakåtreferenser, namngivna grupper, Unicode-egenskapen escapes (med u-flagga) och standardsekvenserna som escape.

Viktiga skillnader från PCRE och Python: lookbehind-stödet är nyligen i JavaScript (2018+); namngivna grupper använder (?<namn>...) syntax; vissa Unicode-escapes kräver att u-flaggan fungerar korrekt. Mönster avsedda för användning på flera språk bör kontrolleras mot varje måls dokumentation.

Prestanda: backtracking-baserade regex-motorer (de flesta inklusive JavaScript) kan ha katastrofal backtracking på vissa patologiska mönster. Tester som hänger testaren är ett tecken på att mönstret behöver förenklas - vanligtvis genom att undvika kapslade kvantifierare och tvetydig alternering.

Bästa metoder

Vanliga frågor

Vilken regex-smak stöder detta verktyg?
Den använder JavaScripts inbyggda RegExp-motor, som stöder standardsyntax inklusive lookaheads, lookbehinds (i moderna webbläsare), namngivna capture-grupper och Unicode-egenskapsutsläpp.
Kan jag testa regex-ersättningar?
Ja. Växla till ersättsläge för att ange ett ersättningsmönster. Du kan använda $1, $2, etc. för att fånga gruppbakåtreferenser, och $<namn> för namngivna grupper.
Varför matchar mitt regex annorlunda här än i Python/PHP?
Olika programmeringsspråk har lite olika regexmotorer. JavaScript stöder inte possessiva kvantifierare eller vissa PCRE-specifika funktioner. Kärnsyntaxen (teckenklasser, kvantifierare, grupper) är densamma för alla språk.
Sparar verktyget mina regexmönster?
Nej. Inget sparas eller överförs. Verktyget körs helt i din webbläsare. Du kan bokmärka eller dela mönster genom att kopiera regex-strängen.
Hur matchar jag en bokstavlig specialtecken?
Undvik det med ett snedstreck. För att matcha en bokstavlig punkt: \. För att matcha ett omvänt snedstreck: \\. Inuti karaktärsklasser [...] förlorar de flesta specialtecken sin betydelse.
Körs testaren på en server?
Nej. Mönsterkompilering och matchning sker i din webbläsare med det inbyggda RegExp-objektet.
Kan jag testa mönster för icke-JavaScript-motorer?
Mestadels. För enkla mönster är de stora motorerna överens. För avancerade funktioner (lookbehind, atomgrupper, possessiva kvantifierare, Unicode-egenskapsutsläpp), bekräfta mot målmotorns dokumentation.
Klarar den mycket stor input?
Upp till några megabyte fungerar smidigt. Större ingångar kan sakta ner eller låsa webbläsaren, särskilt med mönster som är benägna att backa.