Hoppa till huvudinnehåll
FreeOnlineTools Go
Svenska
Hänvisning

Fuskblad för reguljära uttryck: syntax, flaggor och vanliga mönster

Av FreeOnlineTools Team · Uppdaterad 2026-08-28

Snabbt svar

En regex kombinerar literal characters, metacharacters (., \d, \w, \s), quantifiers (*, +, ?, {n,m}), anchors (^, $, \b) och groups ((...), [...]). Flags som g (global), i (case-insensitive), m (multiline) ändrar match-beteende. Testa mönster live med vår Regex Tester.

Introduktion

Regular expressions (regex) beskriver textmönster med ett kompakt formellt språk. De stöds av varje modernt programmeringsspråk, editor och sökverktyg. Detta cheat sheet är en referens för syntaxen definierad av ECMAScript plus vanliga mönster du kan kopiera och anpassa. Använd vår Regex Tester för att testa mönster mot exempeltext.

Steg för steg

  1. Teckenklasser – matcha en uppsättning tecken

    [abc] matchar a, b eller c. [^abc] matchar allt utom a, b, c. [a-z] matchar alla gemener. Fördefinierade klasser: \d = [0-9], \D = icke-siffrig, \w = [A-Za-z0-9_], \W = icke-ord, \s = blanksteg, \S = icke-blanksteg, . = vilket tecken som helst utom nyrad (använd s-flaggan för att inkludera nyrad).

  2. Kvantifierare – hur många gånger som ska upprepas

    * = 0 eller mer. + = 1 eller fler. ? = 0 eller 1. {n} = exakt n. {n,} = minst n. {n,m} = mellan n och m. Lägg till? för lat matchning (t.ex. *? matchar så få som möjligt). Greedy är standard och kan orsaka katastrofal backtracking på kapslade mönster.

  3. Ankare och gränser — var att matcha

    ^ matchar början av strängen (eller linjen med m flagga). $ matchar slutet. \b matchar en ordgräns (mellan \w och \W). \B matchar en icke-ordgräns. Ankare är noll breda – de testar position utan att förbruka tecken.

  4. Grupper och växling

    (abc) är en fångstgrupp; använd $1, $2 i ersättningar. (?:abc) är en icke-fångande grupp. (?=abc) är en blick framåt (påstår vad som följer). (?!abc) är en negativ framtidsutsikt. (?<=abc) är en lookbehind (ES2018+). a|b är alternering (a eller b).

  5. Flaggor – ändra matchningsbeteende

    g = global (hitta alla matchningar, inte bara den första). i = skiftlägesokänslig. m = multiline (^ och $ matchar linjegränser). s = dotAll (. matchar nyrad). u = unicode (behandla mönstret som Unicode-kodpunkter; behövs för emoji och astrala tecken). y = sticky (matchar endast vid lastIndex).

Exempel

Matcha en e-postadress (praktiskt, RFC 5322 förenklat)

Input: Pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/

Produktion: Matchar 'user@example.com' och 'a.b@sub.domain.co' men inte 'plainaddress' eller '@no-user.com'

Extrahera alla hex-färgkoder från CSS

Input: Pattern: /#[0-9a-fA-F]{3,8}\b/g

Produktion: In 'color: #fff; background: #1a2b3c4d' finds ['#fff', '#1a2b3c4d']

Validera ett ISO 8601-datum (ÅÅÅÅ-MM-DD)

Input: Pattern: /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/

Produktion: Matchar "2026-08-28" men avvisar "2026-13-01" och "2026-02-31"

Ersätt siffror med # med hjälp av en fångstgrupp

Input: 'Beställning 42 har skickats' ersatt av /(\d+)/g →'#$1'

Produktion: 'Beställning nr 42 har skickats'

Vanliga problem

  • Giriga kvantifierare matchar för mycket: '<.*>' på '<a><b>' matchar hela strängen '<a><b>' istället för '<a>'. Använd '<.*?>' (lat) för att matcha '<a>' först.
  • Katastrofal bakåtspårning: kapslade kvantifierare som (a+)+b på ingången 'aaaaaaaaaaaaaaaa!' kan ta exponentiell tid. Skriv om mönstret eller använd atomgrupper / possessiva kvantifierare där det stöds.
  • Att glömma u-flaggan för Unicode: /^.$/ matchar en enda kodenhet, så emoji som '😀' (två kodenheter) misslyckas utan u-flaggan. Lägg alltid till u när du matchar astrala tecken.
  • Förväxlar \b (ordgräns) med \s (blanksteg): \b matchar mellan ett ord och ett icke-ordstecken, så det fungerar även i början/slutet av strängen. \s matchar bara faktiska blanksteg.

Tips

  • Testa alltid regex mot både matchande och icke-matchande prover i vår Regex-testare innan du bäddar in det i produktionskoden – kantfodral är lätta att missa.
  • Föredra teckenklasser [a-z] framför alternering (a|b|...|z) för enstaka tecken — klasserna är snabbare och tydligare.
  • Använd icke-fångande grupper (?:...) när du inte behöver det infångade värdet — infångning har en liten prestandakostnad och stör resultatmatrisen.
  • Kompilera regex en gång med ny RegExp() eller en literal at modul scope, inte inuti en hot loop — att återkompilera samma mönster på varje iteration slösar bort CPU.

Relaterade verktyg

Relaterade guider

Referenser