Så använder du Regex-testare
- Skriv ditt mönster mellan snedstrecken, utan de omgivande
/. - Slå på flaggor som
g (alla träffar), i (ignorera skiftläge) och m (flerrads). - Klistra in din testtext. Träffarna markeras till höger och listas nedanför med index och fångstgrupper.
- Kryssa i Ersätt och ange en ersättning som
$1 eller $<name> för att förhandsgranska String.replace. - Välj ett mönster i Mönsterbiblioteket för att utgå från ett testat regex för e-post, URL, IP eller datum.
Reguljära uttryck i JavaScript
Den här testaren använder webbläsarens egen RegExp-motor, så resultaten är exakt vad String.match, matchAll, replace och RegExp.exec returnerar i JavaScript och Node.js. Det inkluderar modern syntax: namngivna grupper (?<name>…), lookbehind (?<=…), Unicode-egenskaper som \p{L} med flaggan u och träffindex med flaggan d.
Vad flaggorna gör
| Flagga | Namn | Effekt |
g | global | Hittar alla träffar i stället för att stanna vid den första. |
i | ignoreCase | Bokstäver matchar oavsett skiftläge. |
m | multiline | ^ och $ matchar i början och slutet av varje rad. |
s | dotAll | . matchar även radbrytningar. |
u | unicode | Behandlar mönstret som kodpunkter; aktiverar \p{…} och \u{…}. |
y | sticky | Matchar bara vid aktuell lastIndex-position. |
d | hasIndices | Rapporterar start- och slutposition för varje fångstgrupp. |
Skydd mot katastrofal backtracking
Mönster med nästlade kvantifierare, som (a+)+$ eller (\w|\d)*x, kan ta exponentiell tid på indata som nästan matchar. På en vanlig webbsida fryser det fliken. Här körs varje matchning i en Web Worker i bakgrunden som stoppas efter en sekund, och du får en tydlig varning i stället för en webbläsare som hänger sig. Samma mönster i produktionskod kan vara en ReDoS-sårbarhet, så behandla varningen som en bugg att åtgärda.
Tips för bättre regex
- Förankra mönster med
^ och $ när du validerar hela värden, annars godkänns en träff var som helst i strängen.
- Föredra specifika klasser som
[^"]* framför .*; de är snabbare och undviker att matcha för mycket.
- Använd icke-fångande grupper
(?:…) när du inte behöver det fångade värdet.
- Namnge dina grupper.
match.groups.year är lättare att läsa än match[1].
Vanliga frågor
Vilken regex-variant använder testaren?
JavaScript (ECMAScript), via webbläsarens inbyggda RegExp. Det mesta av syntaxen delas med PCRE, Python och Java, men funktioner som possessiva kvantifierare, atomära grupper och inline-modifierare som (?i) finns inte i JavaScript.
Varför hittar mitt mönster bara en träff?
Utan flaggan g (global) stannar JavaScript efter första träffen. Slå på g för att hitta alla förekomster.
Hur refererar jag till grupper i ersättningen?
Använd $1, $2… för numrerade grupper, $<name> för namngivna grupper, $& för hela träffen och $$ för ett bokstavligt dollartecken.
Varför avbröts testaren med en timeout?
Mönstret tog mer än en sekund på din indata, vilket nästan alltid betyder katastrofal backtracking. Leta efter nästlade kvantifierare som (x+)+ eller överlappande alternativ som (a|a)* och skriv om dem så att varje tecken bara kan matchas på ett sätt.
Skickas mina testdata någonstans?
Nej. Matchningen körs lokalt i en Web Worker i din webbläsare. Ditt mönster och din text sparas bara i din egen webbläsare så att de finns kvar när du kommer tillbaka.