Utviklere

Slik Tester Du Et Regulært Uttrykk Online (Med Ekte Eksempler)

7 min lesetid

For å teste et regulært uttrykk skriver du mønsteret, velger riktig kombinasjon av flagg, kjører det mot en teststreng og sjekker to ting samtidig: hvilke deler av teksten som faktisk blir markert som treff, og hva som havner i eventuelle fangstgrupper. Gjør du det før mønsteret limes inn i ekte kode, fanger du opp en glemt g eller et uescapet punktum mens det fortsatt koster ingenting å rette. Nedenfor gjør du nettopp dette direkte i nettleseren, uten installasjon og uten at teksten din forlater enheten.

Mønster og flagg: hva de faktisk gjør

Et regulært uttrykk skrives mellom to skråstreker, /mønster/, og alt mellom dem er selve søkelogikken. Etter den avsluttende skråstreken kan du legge til flagg som endrer hvordan mønsteret oppfører seg. Regex-testeren på pluri.tools støtter fire, og det er de fire som finnes i JavaScripts innebygde RegExp-motor:

  • g (global): uten dette flagget stopper søket ved første treff. Med g finner regexen alle forekomster i teksten, ikke bare den første.
  • i (case-insensitive): slår av forskjellen mellom store og små bokstaver, slik at abc og ABC regnes som samme treff.
  • m (multiline): endrer betydningen av ^ og $. Uten m markerer de start og slutt på hele strengen. Med m markerer de start og slutt på HVER linje, noe som er avgjørende hvis du kjører regexen mot en tekst med flere linjer.
  • s (dotAll): normalt matcher . alt bortsett fra linjeskift. Med s-flagget matcher . også linjeskift, noe som er nyttig når mønsteret skal spenne over flere linjer.

I tillegg til flaggene kan mønsteret inneholde fangstgrupper. En vanlig gruppe skrives med parenteser, (\d+), og fanger opp den delen av treffet som ligger inni parentesene, tilgjengelig separat fra resten av treffet. Trenger du en mer lesbar referanse enn “Gruppe 1”, kan du navngi gruppen: (?<year>\d{4}) fanger fire siffer og gir dem navnet year i resultatet.

Fire regex-mønstre du støter på i praksis

Under er fire mønstre som dekker det meste utviklere faktisk trenger regex til: validere e-post, plukke ut fargekoder, matche URL-segmenter og sjekke datoformat.

MønsterFlaggMatcherMatcher ikkeFanger
^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$ingen[email protected]jane@example (mangler toppdomene)ingen
#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})g#2F7BFF, #fff#12G456 (G er ikke hex)Gruppe 1: 2F7BFF
\/(\w+)\/(\w[\w-]*)g/users/123, /products/abc-456/users (mangler andre segment)Gruppe 1: ressurstype, Gruppe 2: id
^\d{4}-\d{2}-\d{2}$ingen2026-07-1107/11/2026 (feil format)ingen

Ta URL-mønsteret først: \/(\w+)\/(\w[\w-]*). Det starter med en escapet skråstrek \/, fordi en vanlig skråstrek ikke trenger escaping i selve regex-teksten her, men gjør det tydelig hvor et segment begynner. Deretter kommer (\w+), som fanger ett eller flere ord-tegn (bokstaver, tall, understrek) inn i Gruppe 1, typisk ressurstypen som users eller products. Så følger enda en \/ og (\w[\w-]*), som krever at ID-en starter med minst ett ord-tegn og deretter kan inneholde bindestrek, slik at abc-456 godtas mens en tom streng eller noe som bare starter med bindestrek avvises. Med g-flagget på kjører mønsteret gjennom hele testteksten og finner hver sti, ikke bare den første, noe som gjør det praktisk å lime inn en hel liste med API-endepunkter og se alle gyldige ruter markert på én gang. Bygger du en rutevalidator, er det nettopp Gruppe 1 og Gruppe 2 du leser ut programmatisk for å avgjøre hvilken kontroller-funksjon som skal håndtere forespørselen og hvilken ID den skal slå opp.

Hex-fargemønsteret, #([0-9a-fA-F]{6}|[0-9a-fA-F]{3}), viser hvorfor g-flagget gjør en reell forskjell i praksis, ikke bare i teorien. Uten g stopper søket etter det første treffet, så limer du inn et helt CSS-stilark med tjue fargekoder, får du bare den første tilbake. Med g plukker regexen ut samtlige. Selve mønsteret starter med et bokstavelig #, etterfulgt av en gruppe med to alternativer adskilt av |: enten seks hex-tegn ([0-9a-fA-F]{6}, dekker 2F7BFF) eller tre ([0-9a-fA-F]{3}, dekker den forkortede formen fff). Fordi alternativene står inni parentes, blir den delen som faktisk matchet lagt i Gruppe 1, uten det innledende #-tegnet. Det betyr at hvis du skal hente ut alle merkevarefarger fra en CSS-fil for å bygge en fargepalett-oversikt, kan du kjøre dette mønsteret med g-flagget og lese Gruppe 1 fra hvert treff rett inn i en liste, uten å måtte trimme bort #-tegnet manuelt etterpå.

Prøv selv

Lim inn ditt eget mønster og din egen teststreng under, og se treff og fangstgrupper oppdateres mens du skriver:

/ /
Regex-tester
Gratis, ingen registrering, fungerer på alle enheter.
Åpne hele verktøyet

Vanlige feil og spesialtilfeller

Å glemme g-flagget. Uten det stopper regexen etter første treff, noe som stille ødelegger alt som forventer alle forekomster, for eksempel et “erstatt alle”-uttrykk som bare ender opp med å erstatte den første forekomsten og la resten stå urørt.

Det uescapede punktumet. Et uescapet . matcher ethvert tegn, ikke et bokstavelig punktum. Mønsteret 192.168.1.1 matcher derfor også noe som 192X168X1X1, fordi hvert punktum blir tolket som “hvilket som helst tegn her”. Bruk \. når du faktisk mener et bokstavelig punktum.

Grådige kontra late kvantorer. .* tar så mye som mulig (grådig), noe som kan strekke seg langt forbi det tiltenkte stedet. Kjører du <.*> mot en hel blokk HTML, matcher den fra den første < helt til den SISTE > i hele blokken, i stedet for å stoppe ved én enkelt tag. .*? (lat) stopper derimot ved første mulige punkt, og er ofte det du egentlig ville ha.

Manglende ankere. Uten ^ og $ kan et mønster matche som en delstreng hvor som helst i teksten. Et “validerings”-mønster uten ankere kan dermed godkjenne en streng som bare inneholder en gyldig del et sted inni seg, og slippe gjennom ugyldig input rundt den. ^ og $ tvinger frem et match mot hele strengen, fra start til slutt, ikke bare et sted i den.

Ofte stilte spørsmål

Hva er den faktiske forskjellen mellom å bruke g-flagget og å utelate det? Uten g returnerer regexen kun det aller første treffet og stopper der, uansett hvor mange ganger mønsteret egentlig forekommer i teksten. Med g fortsetter søket gjennom hele strengen og samler opp alle treff. Forskjellen merkes tydeligst når du bruker regex til søk-og-erstatt: uten g byttes bare første forekomst ut, med g byttes de alle.

Hvordan matcher jeg et bokstavelig spesialtegn som et punktum, dollartegn eller parentes? Sett en backslash foran tegnet: \. for et bokstavelig punktum, \$ for et bokstavelig dollartegn, \( og \) for bokstavelige parenteser. Uten backslash blir disse tegnene tolket som regex-syntaks (punktum betyr “hvilket som helst tegn”, dollartegn betyr “slutten av linjen”, parentes åpner en fangstgruppe), ikke som det bokstavelige tegnet selv.

Hva er en ikke-fangende gruppe, (?:...), og når trenger jeg en slik i stedet for en vanlig (...)-gruppe? En ikke-fangende gruppe grupperer en del av mønsteret, for eksempel for å bruke | eller en kvantor på flere tegn samlet, uten at innholdet blir lagt til i listen over fangede grupper etterpå. Bruk den når du trenger grupperingen rent strukturelt i selve mønsteret, men ikke skal lese ut verdien i koden din. Da unngår du at gruppenummereringen forskyves for de gruppene du faktisk vil hente ut.

Sender dette verktøyet mønsteret eller testteksten min noe sted? Nei. Alt kjører i nettleseren via den innebygde JavaScript RegExp-motoren. Ingenting av det du skriver inn i mønsterfeltet eller teststreng-feltet sendes til en server.

RegexValideringUtviklereRegulære Uttrykk
Regex-tester
Prøv det nå selv med hele verktøyet.
Prøv nå