`RegExp`-objektet

Denne artikel forklarer RegExp-objektet.

Vi vil forklare RegExp-objektet med praktiske eksempler.

YouTube Video

RegExp-objektet

Hvad er RegExp?

RegExp (regulært udtryk) er et objekt, der bruges til at repræsentere strengmønstre. I modsætning til enkle tegnsammenligninger kan du fleksibelt definere 'strenge, der opfylder bestemte betingelser.'.

Ved at bruge et RegExp-objekt kan du udføre operationer som søgning, validering, udtrækning og erstatning af strenge på en kortfattet og overskuelig måde. Det er yderst effektivt til dagligdags opgaver såsom validering af formularinput, loganalyse og tekstformatering. Nedenfor er nogle enkle eksempler på regulære udtryk.

1const pattern = /abc/;
  • Dette regulære udtryk tjekker, om sekvensen 'abc' er inkluderet.

Sådan opretter du regulære udtryk (to metoder)

Der findes to typer RegExp-syntaks: litteral notation og konstruktionsnotation.

1// Literal notation: pattern and flags are written together
2const literal         = /hello/;
3const literalWithFlag = /hello/i;
4const literalDigits   = /\d+/;
5
6// Constructor notation: pattern and flags are passed separately
7const constructor         = new RegExp("hello");
8const constructorWithFlag = new RegExp("hello", "i");
9const constructorDigits   = new RegExp("\\d+");
  • Bogstavelig notation er kortfattet og læsbar, hvilket gør den velegnet til regulære udtryk, der bruges som konstanter.. På den anden side bruges konstruktionsnotation, når du vil opbygge mønstret ved hjælp af variable eller bestemme dets indhold under kørsel.
  • Med bogstavelig notation kan du intuitivt beskrive både det regulære udtryk og dets flag sammen. I modsætning hertil skal du med konstruktionsnotation angive mønsteret og flagene separat.
  • Derudover skal du med konstruktionsnotation angive det regulære udtryk som en streng, så omvendte skråstreger skal maskes to gange.

test(): Den mest grundlæggende validering

RegExp-objektet tilbyder metoder til evalueringer og operationer ved brug af regulære udtryk. test() er en metode, der returnerer en boolsk værdi, der angiver, om et mønster matcher.

1const regex = /JavaScript/;
2
3console.log(regex.test("I love JavaScript")); // true
4console.log(regex.test("I love TypeScript")); // false
  • Det er den første metode, du bør lære, og den er ideel til betinget forgrening eller inputvalidering.

match(): Få matchende resultater

match() returnerer et array med den matchede streng og detaljeret information.

1const text = "Version 1.2.3";
2const result = text.match(/\d+\.\d+\.\d+/);
3
4console.log(result[0]); // "1.2.3"
  • match() er mere praktisk end test() til udtrækning og fortolkning.

replace(): Erstatning med regulære udtryk

replace() konverterer den matchede del til en anden streng.

1const text = "Hello   World";
2const result = text.replace(/\s+/g, " ");
3
4console.log(result); // "Hello World"
  • Du kan bruge det til logformatering eller normalisering af overflødige mellemrum.

Grundlæggende om flag (g, i, m)

Du kan angive 'flag' i regulære udtryk. Flag er indstillinger, der styrer, hvordan et regulært udtryk bearbejder strenge i henhold til bestemte regler. Selv med det samme mønster kan resultaterne ændre sig afhængigt af flagene.

1const text = "apple Apple APPLE";
2const regex = /apple/gi;        // or new RegExp("apple", "gi");
3
4console.log(text.match(regex)); // ["apple", "Apple", "APPLE"]
  • g (global)-flaget søger igennem hele strengen.
  • i (ignore case)-flaget ignorerer forskelle i store og små bogstaver under matchning.
1const multilineText = `apple
2banana
3apple`;
4
5const regexM = /^apple/gm;
6
7console.log(multilineText.match(regexM)); // ["apple", "apple"]
  • m (multiline)-flaget bruges til at behandle flerlinjede strenge linje for linje. Med dette fungerer ^ og $ ud fra starten eller slutningen på hver linje i stedet for hele strengen.

Tegnklasser: Kombinér flere kandidater

Ved at bruge kantede parenteser [] kan du definere et sæt mulige tegn for en enkelt position.

1const regex = /gr[ae]y/;
2
3console.log(regex.test("gray")); // true
4console.log(regex.test("grey")); // true
  • Dette er nyttigt til at håndtere stavemådeversioner og enkle alternativer.

Metategn: Almindelige genveje

Metategn er symboler, der gør det muligt at skrive ofte anvendte mønstre i en kortere form.

1const regex = /\d{4}-\d{2}-\d{2}/;  // or new RegExp("\\d{4}-\\d{2}-\\d{2}");
2
3console.log(regex.test("2025-12-29")); // true
  • \d betyder et ciffer, og {n} angiver antallet af gentagelser.

^ og $: Valider hele strengen

^ og $ repræsenterer starten og slutningen af en streng.

1const regex = /^\d+$/;
2
3console.log(regex.test("123"));   // true
4console.log(regex.test("123a"));  // false
  • De er vigtige i situationer, hvor et nøjagtigt match er påkrævet, som for eksempel ved formularinput.

Gruppering og fangst

Ved at bruge parenteser () kan du udtrække delværdier.

1const text = "2025/12/29";
2const regex = /(\d{4})\/(\d{2})\/(\d{2})/;
3const [, year, month, day] = text.match(regex);
4
5console.log(year, month, day); // 2025 12 29
  • Det bruges ofte til at opdele datoer og strukturerede strenge.

Almindelige fejl og vigtige ting at bemærke

Regulære udtryk er kraftfulde, men de har en tendens til at blive svære at læse.

1// Hard to read
2const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+$/;
  • Hvis det bliver for komplekst, kan du overveje at tilføje kommentarer, opdele udtryk eller revidere selve processen.

Sammendrag

RegExp er en væsentlig grundlæggende funktion i JavaScript til at beskrive strengbehandling enkelt og præcist. Du behøver ikke at lære komplekse regulære udtryk fra starten; det er vigtigt at bruge grundlæggende metoder og syntaks som test, match og replace efter dine praktiske behov. Hvis du kan betragte regulære udtryk ikke som ‘særlig viden’, men som ‘værktøjer til organiseret mønsterrepræsentation’, vil du i høj grad forbedre kvaliteten og læsbarheden af inputvalidering og tekstbehandling.

Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.

YouTube Video