🌐 DA

🔣 Regex-tester

Test regulære udtryk i realtid, og se resultatet af matches. Indeholder flagindstillinger, gruppekaptur og et bibliotek med almindelige mønstre.

Almindelige mønstre

GUIDE

Laes mere

01

1. Grundlæggende om regulære udtryk

Regulære udtryk (Regex) er kraftfulde værktøjer til at definere, søge efter, udtrække og erstatte tekstmønstre. Match bogstaveligt (\d for cifre, \w for tegn i ord) eller brug specialtegn til mere komplekse mønstre. Eksempel: ^[a-z]+$ betyder strenge, der kun indeholder små bogstaver. ^ er start, $ er slut, [a-z] er a til z, + betyder en eller flere. Understøttes i næsten alle programmeringssprog og tekstredigeringsprogrammer og er afgørende for inputvalidering, dataanalyse og tekstudskiftning.

02

2. Samling af almindelige mønstre

Ofte brugte regex-mønstre i praksis: E-mail: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$, Telefon (US): ^(\+1)?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$, URL: ^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b, Dato (YYYY-MM-DD): ^\d{4}-\d{2}-\d{2}$, Adgangskode (min. 8 tegn, store+små+tal+specialtegn): ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$. Brug disse mønstre som udgangspunkt, og tilpas dem til dit projekt.

03

3. Forklaring af regex-flag

Regex-flag styrer søgeadfærden. g(global): finder alle matches, ikke kun det første. i(ignoreCase): matcher uden hensyn til store og små bogstaver (/hello/i matcher Hello, HELLO). m(multiline): ^ og $ matcher start/slut på hver linje. s(dotAll): . matcher linjeskifttegn (\n). u(unicode): håndterer fuld Unicode korrekt (emojis osv.). y(sticky): starter søgningen kun ved positionen lastIndex. Eksempel: /hello/gi finder alle hello uden hensyn til store og små bogstaver.

04

4. Fangstgrupper og bagreferencer

Parenteser () opretter grupper, der gemmer matchede dele til senere brug. Eksempel: /(\d{4})-(\d{2})-(\d{2})/ hvor $1 er år, $2 er måned, $3 er dag. JavaScripts match()-resultatarray indeholder fangstgrupper. Bagraferences \1, \2 matcher den samme tekst som de tidligere grupper. Eksempel: /(\w+)\s+\1/ matcher "hello hello". Ikke-fangende grupper (?:) grupperer uden at gemme, hvilket giver bedre ydeevne.

05

5. Lookahead og lookbehind

Lookahead og lookbehind tjekker for mønstre før/efter uden at inkludere dem i matchet. Positiv lookahead (?=): /\d(?=px)/ matcher cifre før px ("100" i "100px"). Negativ lookahead (?!): /\d(?!px)/ matcher cifre, der ikke står før px. Positiv lookbehind (?<=): /(?<=\$)\d+/ matcher cifre efter $ ("100" i "$100"). Negativ lookbehind (?<!): det modsatte. Bruges ofte i adgangskodevalidering til at tjekke for bestemte tegn.

06

6. Optimering af regex-ydeevne

Komplekse regex-mønstre kan give problemer med ydeevnen. Vær så specifik som muligt ([a-z]+ i stedet for .*). Erstat unødvendige fangstgrupper med ikke-fangende grupper (?:). Brug dovne kvantorer (*?, +?) i stedet for grådige (*,+) for at reducere backtracking. Til store tekster kan strengmetoder (indexOf, startsWith) være hurtigere end regex. For-kompiler regex til genbrug (opret ikke ny RegExp igen og igen). Pas på ReDoS-angreb (Regular Expression Denial of Service) - brug aldrig brugerinput direkte som regex-mønstre.

Ofte stillede sporgsmal

Kan jeg kombinere flere regex-flag?
Ja, du kan slå flere flag til på én gang - for eksempel finder g og i sammen alle matches, mens der ses bort fra store og små bogstaver. Markér bare de ønskede indstillinger, så anvender værktøjet dem sammen.
Kan jeg bruge de indbyggede almindelige mønstre direkte?
Mønstre som e-mail, telefon, URL og dato fungerer direkte i de fleste tilfælde, men det er bedst at tilpasse dem til dit projekts specifikke behov (f.eks. landespecifikke telefonformater).
Hvad skal jeg tjekke, når der ikke er nogen matches?
Tjek først for tastefejl i mønsteret, manglende escape-tegn (\. i stedet for .) og flagindstillinger. "Ingen træffere fundet" betyder, at regex'en er gyldig, men ikke matcher din teststreng.
Hvordan afspejles fangstgrupper i resultaterne?
Dette værktøj viser ikke fangede gruppers værdier separat. I stedet fremhæver det hvert match i teststrengen og viser det samlede antal matches. Du kan stadig skrive fangstgrupper i dit mønster, men for at se hvad $1, $2 osv. faktisk har fanget, skal du selv inspicere det (f.eks. via browserkonsollen).
Hvorfor kører komplekse regex-mønstre langsomt?
Det skyldes ofte grådige kvantorer eller indlejrede grupper, der udløser kraftig backtracking. Mere specifikke mønstre og brug af dovne kvantorer (*?, +?) hjælper som regel.