Hjem » Siste artikler » Regex for nybegynnere i Node.js: slik håndterer du tekst uten å miste oversikten

Regex for nybegynnere i Node.js: slik håndterer du tekst uten å miste oversikten

Hovedillustrasjon
Hovedillustrasjon. Foto: James Harrison / Unsplash.

Tekstbehandling dukker opp i nesten alle prosjekter: validering av skjema, filtrering av logger, søk i filer, rensing av input. Før eller siden møter du på regulære uttrykk, ofte skrevet som mystisk linjestøy som ingen tør å røre.

Her får du en rolig og konkret innføring i regex i Node.js. Målet er at du skal forstå hva som faktisk skjer, kunne lese enkle mønstre selv og unngå de vanligste fellene når du jobber med tekst.

Hva er regex, og når bør du bruke det i Node.js?

Regex (regulære uttrykk) er et lite språk for å beskrive mønstre i tekst. I stedet for å lete manuelt med mange if-setninger, kan du si ting som: finn alle tall, finn alt som ser ut som en e‑post, fjern alle HTML‑tagger.

I Node.js er regex innebygd i selve språket, så du trenger ingen ekstra pakker for grunnleggende bruk. Du kan bruke det direkte i for eksempel inputvalidering, filtrering av API‑data eller enkle teksttransformasjoner på serveren.

To måter å lage regex i Node.js

Det finnes to hovedmåter å definere et regex‑mønster på. Den vanligste er å bruke skråstreker:

Eksempel:

const pattern = /abc/;

Den andre er å bruke konstruktørenRegExp:

const pattern = new RegExp("abc");

Når bør du bruke hvilken variant?

Som tommelfingerregel: bruk/mønster/når mønsteret er statisk og du kjenner det på forhånd. Dette er mest lesbart og hyppigst brukt.

Bruknew RegExp()når du må bygge regex dynamisk, for eksempel basert på en variabel. Da må du være ekstra forsiktig med spesialtegn og escaping slik at ikke variabler tolkes som regex‑syntaks.

De viktigste byggesteinene i et regex

I stedet for å lære hele regex‑språket på en gang, er det bedre å starte med de delene du faktisk trenger ofte. Her er noen trygge grunnsteiner.

Enkle tegn og grupper

Et regex uten spesialtegn matcher bokstavelig tekst. /abc/ finner “abc” i en streng. Mellomrom og bokstaver er som regel “vanlige” tegn.

Hvis du vil matche ett av flere tegn eller tall, kan du bruke hakeparenteser:

  • /[abc]/ matcher “a” eller “b” eller “c”
  • /[0-9]/ matcher ett vilkårlig siffer
  • /[a-z]/ matcher en liten bokstav i det engelske alfabetet

Kvantorer: hvor mange ganger noe kan gjentas

Kvantorer sier hvor ofte et mønster får lov til å gjenta seg. Et vanlig mønster er å beskrive “ett eller flere” tegn:

  • + ett eller flere ganger, for eksempel /[0-9]+/
  • * null eller flere ganger
  • ? null eller én gang

For mer kontroll kan du bruke klammeparenteser: {min,max}. For eksempel matcher /[0-9]{4}/ nøyaktig fire siffer, mens /{1,3}/ betyr mellom ett og tre ganger.

Regex i Node.js: test, søk og erstatt

Det første du bør lære deg er hvordan du faktisk kjører regex på tekst i Node.js. Det finnes flere måter, men to metoder går igjen i hverdagskode.

test(): sjekk om noe matcher

RegExp.prototype.test returnerertrueellerfalseavhengig av om mønsteret finnes i strengen. Dette er nyttig til for eksempel enkel validering.

Eksempel:

const emailPattern = /^[^@s]+@[^@s]+.[^@s]+$/;
console.log(emailPattern.test("[email protected]")); // true
console.log(emailPattern.test("ugyldig@")); // false

Regexen over er ikke en perfekt e‑postvalidering, men den illustrerer hvordan du kan sjekke grunnleggende struktur uten å bli altfor kompleks.

match(): hent ut det som ble funnet

Tematisk illustrasjon
Tematisk illustrasjon. Foto: Krishna Pandey / Unsplash.

String.prototype.match brukes til å hente ut treff. Uten flagg får du vanligvis tilbake det første treffet. Med globalt flagggfår du alle treffene i en liste.

Eksempel:

const text = "Logg: kode 200, kode 404, kode 500";
const codes = text.match(/kode d+/g);
console.log(codes); // ["kode 200", "kode 404", "kode 500"]

Legg merke til regexen /kode d+/g: d betyr ett siffer, + betyr ett eller flere, og flagget g betyr at vi vil ha alle treffene.

Flagg: gjør regexen din mer fleksibel

Flagg er små bokstaver du legger bak skråstreken på regexen. De endrer hvordan mønsteret søkes, uten å endre selve mønsteret.

  • g: globalt søk, finn alle treff
  • i: ignorert skriftform, “abc” matcher også “ABC”
  • m: multiline, påvirker hvordan ^ og $ fungerer

Eksempel med flagg:

const pattern = /feilkode:s*d+/gi;
const log = "Feilkode: 10nfeilkode: 22";
console.log(log.match(pattern)); // ["Feilkode: 10", "feilkode: 22"]

Her gjør g at vi får alle forekomster, mens i gjør at vi ikke bryr oss om store eller små bokstaver.

Vanlige feller og hvordan du unngår dem

Regex kan skape rare feil hvis du ikke kjenner noen grunnleggende særheter i Node.js sin implementasjon.

Den skjulte fellen med globalt flagg ogtest()

Når du brukergsammen medtest(), husker regexen hvor forrige søk sluttet. Det betyr at neste kall kan starte senere i strengen og gi uventede resultater.

Eksempel:

const pattern = /ab/g;
console.log(pattern.test("ab ab")); // true
console.log(pattern.test("ab ab")); // true
console.log(pattern.test("ab ab")); // false

I stedet for å merke deg alle detaljene her, er en enkel regel: unngågsammen medtest()med mindre du vet hvorfor du trenger det. For vanlige valideringsoppgaver holder det å bruke regex uten globalt flagg.

Ikke overdriv regex‑bruken

Det er fristende å løse alt med ett avansert mønster. Problemet er at koden blir vanskelig å lese og vedlikeholde. Spesielt hvis andre skal inn og feilsøke senere.

Bruk hellere flere små steg enn ett enormt regex. Kombiner eventuelt et enkelt mønster med vanlig strenglogikk i Node.js, som split, includes og startsWith.

Små grep som gjør regex lesbart

Regex kan se uforståelig ut ved første blikk, men noen bevisste valg gjør det mye ryddigere. Tenk på regex som du tenker på annen kode: gi ting navn og dokumenter når det blir mer komplisert.

Et nyttig grep er å lagre regex i en variabel med et tydelig navn i stedet for å dytte hele mønsteret rett inn i en funksjon.

Eksempel: ryddigere validering i Node.js

const simpleEmailRegex = /^[^@s]+@[^@s]+.[^@s]+$/;

function isValidEmail(email) {
  return simpleEmailRegex.test(email);
}

if (!isValidEmail(input)) {
  console.log("Ugyldig e-postadresse");
}

Ved å pakke regexen inn i en funksjon med et tydelig navn, slipper resten av koden å forholde seg til selve mønsteret. Det gjør det enklere å endre valideringen senere uten å rote i forretningslogikken.

En trygg vei videre med regex i Node.js

For en del oppgaver kan regex bli veldig komplekst, for eksempel fullverdig e‑postvalidering eller tolkning av HTML. Da kan det være bedre å bruke egne biblioteker eller spesialiserte verktøy som er laget for akkurat den jobben.

Når du bygger Node.js‑prosjekter, er et fornuftig mål å kunne lese og skrive enkle regex for vanlige ting som tall, enkle koder, whitespace og grunnleggende mønstre. Resten kan du slå opp ved behov og teste rolig i et lite skript før du tar det inn i produksjon.

0 kommentarer