UltKit

Regex-tester

Skriv inn et mønster, kryss av for flaggene du trenger, og lim inn tekst: hvert treff utheves mens du skriver og listes opp med posisjon og fangstgrupper. Mønsteret kjøres i nettleserens egen JavaScript-regex-motor, så resultatene stemmer med koden din, og teksten blir værende på enheten din.

Flagg

0 tegn · 0 ord · 0 linjer

Treff utheves her.

0 tegn · 0 ord · 0 linjer

Kjører helt i denne nettleserfanen. Teksten din lastes aldri opp eller lagres.

JavaScript regex-tokens

Kolonnen for første treff ble laget ved å kjøre hvert mønster på teksten sin med JavaScript-motoren som bygget denne siden.

TokenBetydningMønsterTekstFørste treff
\dSiffer 0–9/\d+/Order 66 shipped66
\wBokstav, siffer eller understrek (ASCII)/\w+/snake_case-idsnake_case
\sBlanktegn, inkludert tabulatorer og linjeskift/\s+/two spaces
.Alle tegn unntatt linjeskift (med mindre s)/a.c/abc a-cabc
^ $Start og slutt på inndata (eller linje, med m)/^\w+$/singlesingle
[abc]Ett av de oppførte tegnene/[aeiou]/rhythm and bluesa
[^abc]Alle tegn som ikke er oppført/[^0-9]+/2026-10-18-
* + ?0 eller flere, 1 eller flere, 0 eller 1/colou?r/color colourcolor
{n,m}Mellom n og m ganger/\d{2,4}/7 42 1999 12345642
(…)Fangstgruppe/(\d+)px/width: 320px320px
(?<name>…)Navngitt fangstgruppe/(?<h>\d\d):(?<m>\d\d)/at 09:4509:45
(?:…)Gruppe uten fangst/(?:ab)+/ababab!ababab
a|bBegge sider/cat|dog/hotdogdog
\bOrdgrense/\bcat\b/concat catcat
(?=…)Etterfulgt av (lookahead)/\d+(?=%)/50 of 75%75
(?<!…)Ikke foregått av (negativ lookbehind)/(?<!\$)\b\d+/$30 or 4040
\p{L}Alle Unicode-bokstaver (krever u)/\p{L}+/unaïve 東京naïve

De seks flaggene og hva de endrer

g (global) finner alle treff i stedet for å stoppe ved det første; uten den inneholder listen ett treff. i ignorerer store og små bokstaver. m (flerlinjet) gjør at ^ og $ treffer start og slutt på hver linje i stedet for bare på hele teksten, noe du vil ha for et mønster som etterfølgende mellomrom. s (dotAll, lagt til i ES2018) lar . treffe linjeskift også. u (unicode) behandler teksten som kodepunkter, slik at en emoji teller som ett tegn, og gir tilgang til egenskapsescapes som \p{L} for enhver bokstav i et hvilket som helst skriftsystem. y (sticky) treffer bare nøyaktig på gjeldende posisjon, modusen som tokenizere bruker. JavaScript har også d for treffindekser og v for mengdeoperasjoner i tegnklasser; denne testeren holder seg til de seks over.

Under testteksten viser hvert treff indeksen og gruppene sine. Nummererte grupper kommer fra vanlige parenteser, (?:…) lager grupper uten fanging, og (?<year>\d{4}) lager en navngitt gruppe som vises med navn, slik ISO-dato-eksemplet viser. Menyen Vanlige mønstre setter inn testede utgangspunkter for e-postadresser, URL-er, IPv4-adresser, heksfarger, UUID-er, gjentatte ord og etterfølgende mellomrom. Se på e-postmønsteret som en enkel sjekk, ikke som validering: den fullstendige grammatikken for adresser er langt mer tillatende, og den eneste ekte testen er å sende en melding.

Lookbehind og katastrofal backtracking

Lookarounds tester hva som omgir en posisjon uten å bruke opp tegn. Lookahead, (?=…) og (?!…), har alltid vært en del av JavaScript; lookbehind, (?<=…) og (?<!…), kom i ES2018 og nådde alle store nettlesere da Safari 16.4 støttet det i 2023. Så (?<=\$)\d+ finner 42 i «$42» uten å ta med dollartegnet. I motsetning til mange andre motorer tillater JavaScript lookbehind av vilkårlig lengde.

JavaScript-motoren bruker tilbakesporing: når en sti mislykkes, går den tilbake og prøver alternativene. Nestede kvantifikatorer som (a+)+$ gir den et eksponentielt antall måter å dele opp den samme teksten på, så en streng med 30 a-er etterfulgt av en x kan ta sekunder, og noen få bokstaver til kan ta timer. Dette kalles katastrofal tilbakesporing, og på servere blir det ReDoS, et tjenestenektangrep; én enkelt WAF-regel med denne feilen tok ned Cloudflares nettverk i omtrent en halvtime 2. juli 2019. Siden testeren kjører i fanen din, kan et slikt mønster fryse siden; last siden på nytt og skriv mønsteret om slik at ingen to kvantifikatorer kan gjøre krav på de samme tegnene, med strammere klasser som [^,]* i stedet for .*, eller med ankere. For å redigere selve teksten i stedet for å finne treff i den, se tekstverktøy; flere utviklerverktøy finner du i oversikten utviklerverktøy.

Ofte stilte spørsmål

Hvorfor finner regex-en min bare ett treff?
g-flagget er av. Uten det stopper motoren etter det første treffet. Huk av g for å liste alle forekomster; y-flagget alene finner også flere, men bare når de følger rett etter hverandre.
Matcher \d sifre fra andre skriftsystemer i JavaScript?
Nei. I JavaScript betyr \d bare 0 til 9 og \w bare ASCII-bokstaver, sifre og understrek, selv med u-flagget. Bruk \p{Nd} eller \p{L} med u for andre skriftsystemer.
Oppfører et mønster testet her seg likt i Python eller PHP?
Grunnleggende syntaks går igjen, men detaljene er ulike: i Python skrives navngitte grupper (?P<name>…), PHP og Python støtter possessive kvantifikatorer som JavaScript mangler, og reglene for lookbehind varierer. Test på nytt i målmotoren.
Hvordan matcher jeg et bokstavelig punktum eller en parentes?
Escape det med omvendt skråstrek: \. treffer et punktum og \[ en åpnende hakeparentes. Inne i en tegnklasse er de fleste symboler allerede bokstavelige, så [.] treffer også bare et punktum.
Hvorfor frøs siden mens jeg skrev et mønster?
Mønsteret utløste sannsynligvis katastrofal tilbakesporing på teksten din. Last siden på nytt, unngå nestede kvantifikatorer som (.*)* eller (a+)+, og la hver del treffe så lite som mulig.