Sådan bruger du Regex-tester
- Skriv dit mønster mellem skråstregerne, uden de omgivende
/. - Slå flag som
g (alle match), i (ignorér store/små bogstaver) og m (flere linjer) til eller fra. - Indsæt din testtekst. Match fremhæves til højre og vises nedenfor med indeks og indfangningsgrupper.
- Sæt flueben i Erstat, og indtast en erstatning som
$1 eller $<name> for at forhåndsvise String.replace. - Vælg et mønster i Mønsterbibliotek for at starte fra et testet regex til e-mail, URL, IP eller dato.
Regulære udtryk i JavaScript
Testeren bruger din browsers egen RegExp-motor, så resultaterne er præcis dem, som String.match, matchAll, replace og RegExp.exec returnerer i JavaScript og Node.js. Det gælder også moderne syntaks: navngivne grupper (?<name>…), lookbehind (?<=…), Unicode property escapes som \p{L} med flaget u og match-indekser med flaget d.
Hvad flagene gør
| Flag | Navn | Effekt |
g | global | Find alle match i stedet for at stoppe ved det første. |
i | ignoreCase | Bogstaver matcher uanset store/små bogstaver. |
m | multiline | ^ og $ matcher ved starten og slutningen af hver linje. |
s | dotAll | . matcher også linjeskift. |
u | unicode | Behandl mønsteret som kodepunkter; aktiverer \p{…} og \u{…}. |
y | sticky | Match kun ved den aktuelle lastIndex-position. |
d | hasIndices | Angiv start- og slutpositioner for hver indfangningsgruppe. |
Beskyttelse mod katastrofal backtracking
Mønstre med indlejrede kvantorer, som (a+)+$ eller (\w|\d)*x, kan tage eksponentiel tid på input, der næsten matcher. På en almindelig webside fryser det fanen. Her kører hvert match i en Web Worker i baggrunden, som stoppes efter ét sekund, og du får en tydelig advarsel i stedet for en hængende browser. Det samme mønster i produktionskode kan være en ReDoS-sårbarhed, så betragt advarslen som en fejl, der skal rettes.
Tips til bedre regexes
- Forankr mønstre med
^ og $, når du validerer hele værdier, ellers godkendes et match hvor som helst i strengen.
- Foretræk specifikke klasser som
[^"]* frem for .*; de er hurtigere og undgår at matche for meget.
- Brug ikke-indfangende grupper
(?:…), når du ikke har brug for den indfangede værdi.
- Navngiv dine grupper.
match.groups.year er lettere at læse end match[1].
Ofte stillede spørgsmål
Hvilken regex-variant bruger testeren?
JavaScript (ECMAScript) via din browsers indbyggede RegExp. Det meste af syntaksen deles med PCRE, Python og Java, men funktioner som possessive kvantorer, atomare grupper og inline-modifikatorer som (?i) findes ikke i JavaScript.
Hvorfor finder mit mønster kun ét match?
Uden flaget g (global) stopper JavaScript efter det første match. Slå g til for at finde alle forekomster.
Hvordan refererer jeg til grupper i erstatningen?
Brug $1, $2… til nummererede grupper, $<name> til navngivne grupper, $& til hele matchet og $$ til et bogstaveligt dollartegn.
Hvorfor stoppede testeren med en timeout?
Mønsteret tog mere end ét sekund på dit input, hvilket næsten altid betyder katastrofal backtracking. Kig efter indlejrede kvantorer som (x+)+ eller overlappende alternativer som (a|a)*, og omskriv dem, så hvert tegn kun kan matches på én måde.
Bliver mine testdata sendt nogen steder hen?
Nej. Matchningen kører lokalt i en Web Worker i din browser. Dit mønster og din tekst gemmes kun i din egen browser, så de stadig er der, når du kommer tilbage.