Regex-testare
Testa reguljära uttryck i JavaScript live med markerade träffar, fångande grupper, ersättning och en förklaring av varje del av mönstret.
| # | Position | Träff | Grupper |
|---|
Förklaring av mönstret
Varning: en upprepad grupp innehåller en annan öppen kvantifierare, till exempel (a+)+. Sådana mönster kan ta exponentiell tid på text som nästan matchar (katastrofal backtracking).
Så använder du regex-testaren
- Skriv ditt mönster i Reguljärt uttryck, utan de omgivande snedstrecken. Snedstrecken och de aktiva flaggorna visas runt fältet, som i
/mönster/g. - Kryssa i de Flaggor du behöver:
g(global),i(ignorera skiftläge),m(flera rader),s(dotAll),u(unicode) ellery(sticky). - Klistra in texten som ska sökas igenom i Testtext. Träffarna markeras medan du skriver, och tabellen listar varje träff med position och fångande grupper.
- Vill du prova en ersättning fyller du i Ersättning. Rutan Resultat efter ersättning visar texten med alla träffar utbytta, redo att kopieras.
- Läs Förklaring av mönstret för att kontrollera vad varje del av ditt regex gör. Osäker på var du ska börja? Klicka på Ladda ett exempel.
Det här visar testaren
- Markerade träffar: varje träff i testtexten markeras, så att du direkt ser vad som fångas och vad som missas.
- Tabellen med träffar: numret på varje träff, dess position (teckenförskjutning från början, räknat från 0), den matchade texten och värdet för varje fångande grupp. Namngivna grupper som
(?<year>\d{4})visas under sitt namn, och grupper som inte deltog i träffen visas som ”(ingen träff)”. De första 1 000 träffarna listas. - Ersättning: ersättningstexten använder JavaScript-syntax:
$1eller$2för numrerade grupper,$<name>för namngivna grupper,$&för hela träffen och$$för ett vanligt dollartecken. Utan flaggangersätts bara den första träffen. - Förklaring: mönstret delas upp i element (literal text, teckenklasser, ankare, grupper, kvantifierare, lookarounds, bakåtreferenser), vart och ett med en kort beskrivning. Nästlade grupper dras in, vilket gör långa mönster mycket lättare att granska.
Flaggorna i korthet
| Flagga | Effekt |
|---|---|
g |
Hittar alla träffar i stället för att stanna vid den första |
i |
Ignorerar skillnaden mellan versaler och gemener |
m |
^ och $ matchar i början och slutet av varje rad |
s |
. matchar även radbrytningar |
u |
Fullt Unicode-läge: \u{…}, \p{…} och emoji hanteras som enskilda tecken |
y |
Sticky: varje träff måste börja exakt där den förra slutade |
Tänk på att \w och \b i JavaScript bara räknar ASCII-bokstäver som ordtecken, så å, ä och ö matchas inte av \w. Vill du matcha svenska ord kan du använda [\p{L}\d_] eller \p{L}+ tillsammans med flaggan u.
Katastrofal backtracking
Vissa mönster tar exponentiell tid på text som nästan matchar. Det klassiska exemplet är (a+)+$ testat mot en lång rad a följd av ett b: motorn prövar alla sätt att fördela a:na mellan de två kvantifierarna innan den ger upp. Problemet, känt som ReDoS, har fått riktiga webbplatser att gå ner.
Verktyget skyddar din webbläsare på tre sätt. Matchningen körs i en bakgrundsworker som stoppas efter 1,5 sekunder, testtexten är begränsad till 100 000 tecken och förklaringen varnar dig när en upprepad grupp innehåller en annan öppen kvantifierare. När ett mönster tar för lång tid kan du skriva om det så att varje tecken bara kan matchas på ett sätt, till exempel a+$ i stället för (a+)+$.
Vanliga frågor
Vilken regex-variant använder verktyget?
Det använder webbläsarens motor för JavaScript (ECMAScript), precis som new RegExp() och String.prototype.replace() skulle göra i din kod. Det mesta av syntaxen är gemensam med PCRE, Python och Java, men vissa funktioner skiljer sig: possessiva kvantifierare och atomära grupper finns inte i JavaScript, och lookbehind stöds i alla aktuella webbläsare.
Varför hittar mitt mönster bara en träff?
Flaggan g är avstängd. Utan den stannar JavaScript efter första träffen, och ersättningen ändrar bara den.
Hur matchar jag en vanlig punkt, hakparentes eller ett frågetecken?
Skydda tecknet med ett omvänt snedstreck: \., \[, \?. Förklaringen visar skyddade tecken med ”(skyddat)” så att du kan kontrollera.
Skickas min text någonstans?
Nej. Mönstret och texten behandlas bara i din webbläsare, vilket gör verktyget säkert för loggfiler och data som innehåller personuppgifter.
Varför skiljer sig positionen från kolumnen i min redigerare?
Positionerna räknar tecken från 0, över alla rader, på samma sätt som JavaScripts match.index. Radbrytningar räknas som ett tecken, och en emoji utanför Unicodes grundläggande flerspråkiga plan (BMP) räknas som två.
Relaterade verktyg
- JSON-formaterare och validerare Gratis JSON-formaterare och validerare som snyggar till, minifierar och kontrollerar JSON i webbläsaren, med syntaxfel angivna med rad och kolumn.
- URL-kodare och avkodare Gratis URL-kodare och avkodare. Procentkoda frågeparametrar eller hela URL:er, avkoda %XX-sekvenser och tolka + som mellanslag. Körs i webbläsaren.
- Hashgenerator Generera MD5-, SHA-1-, SHA-256- och SHA-512-hashar av text eller filer i valfri storlek och kontrollera kontrollsummor. Allt körs i din webbläsare.