Regex-lathund
Reguljära uttryck är kompakta nog att syntaxen är lättare att slå upp än att memorera. Denna sida är alltihop på en skärm — klasser, kvantifierare, ankare, grupper, lookaround, escaping och flaggorna — med ett fungerande exempel för varje rad.
Varianten är JavaScript, vilket är det som körs i din webbläsare och det som regex-testaren på den här webbplatsen använder. Det mesta är identiskt i Python, Java, Go och PCRE; där varianter skiljer sig åt, skiljer de sig i utkanterna — stöd för lookbehind, syntax för namngivna grupper, och huruvida \d betyder "ASCII-siffra" eller "vilken Unicode-siffra som helst".
Två saker står för de flesta överraskningarna. Kvantifierare är giriga: de tar allt de kan och lämnar tillbaka bara när resten av mönstret misslyckas, vilket är varför <.+> slukar två taggar och <.+?> inte gör det. Och alternering binder lösast av allt, så ^a|b$ betyder "börjar med a, eller slutar med b" — inte vad de flesta avser när de skriver det.
Teckenklasser
11Kortformerna är enbart ASCII om du inte lägger till u-flaggan och använder Unicode-egenskapsescapes.
| Syntax | Betydelse | Exempel |
|---|---|---|
| . | Vilket tecken som helst utom en radbrytningLägg till s-flaggan för att få det att matcha radbrytningar också. | /a.c/"abc" → "abc" |
| \d | En siffra, 0–9 | /\d+/"order 42" → "42" |
| \D | Allt som inte är en siffra | /\D+/"42abc" → "abc" |
| \w | Bokstav, siffra eller understreckEndast ASCII — "é" är inte \w. | /\w+/"user_1!" → "user_1" |
| \W | Allt som \w inte matchar | /\W+/"a++b" → "++" |
| \s | Vilket blanktecken som helst, inklusive tabbar och radbrytningar | /\s+/"a \t b" → " \t " |
| \S | Vilket icke-blanktecken som helst | /\S+/" hi" → "hi" |
| [abc] | Något av de listade tecknen | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Vilket tecken som helst utom de listade | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Ett intervall av tecken | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Vilken Unicode-bokstav som helst (kräver u-flaggan) | /\p{L}+/"42 café" → "café" |
Kvantifierare
7Alla dessa är giriga som standard: de tar så mycket de kan och lämnar tillbaka bara om resten av mönstret misslyckas.
| Syntax | Betydelse | Exempel |
|---|---|---|
| * | Noll eller fler | /ab*/"a" → "a" |
| + | En eller fler | /ab+/"abbb" → "abbb" |
| ? | Noll eller en — gör det valfritt | /colou?r/"color" → "color" |
| {3} | Exakt tre | /\d{3}/"id 12345" → "123" |
| {2,} | Två eller fler | /a{2,}/"aaa" → "aaa" |
| {2,4} | Mellan två och fyra | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Lat — tar så lite som möjligtDen giriga <.+> skulle sluka båda taggarna. | /<.+?>/"<a><b>" → "<a>" |
Ankare och gränser
4Dessa matchar en position, inte ett tecken, så de förbrukar ingenting.
| Syntax | Betydelse | Exempel |
|---|---|---|
| ^ | Början av strängen, eller av en rad med m-flaggan | /^a/"abc" → "a" |
| $ | Slutet av strängen, eller av en rad med m-flaggan | /c$/"abc" → "c" |
| \b | En ordgränsDet är detta som hindrar "cat" från att matcha inuti "concatenate". | /\bcat\b/"the cat sat" → "cat" |
| \B | Inte en ordgräns | /\Bcat/"concatenate" → "cat" |
Grupper och alternering
5| Syntax | Betydelse | Exempel |
|---|---|---|
| (abc) | Fångande grupp — ihågkommen för ersättning | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Gruppering utan fångstAnvänd detta när du bara behöver grupperingen; det håller fångstnumren meningsfulla. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Namngiven fångande grupp | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Endera sidan — alterneringAlternering har lägst prioritet: ^a|b$ är "^a" eller "b$", inte "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Bakåtreferens till den första gruppen | /(\w)\1/"letter" → "tt" |
Lookaround
4Påståenden om vad som omger en position. De matchar ingenting själva, vilket är det som gör dem säkra att kombinera.
| Syntax | Betydelse | Exempel |
|---|---|---|
| (?=…) | Lookahead — följt av detta | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negativ lookahead — inte följt av detta | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind — föregånget av detta | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negativ lookbehind — inte föregånget av detta | /(?<!\$)\b\d+/"about 40" → "40" |
Escaping
5Dessa tolv tecken är de som behöver ett omvänt snedstreck för att tolkas bokstavligt.
| Syntax | Betydelse | Exempel |
|---|---|---|
| \. | En bokstavlig punkt | /\d\.\d/"v2.5" → "2.5" |
| \\ | Ett bokstavligt omvänt snedstreck | /\\/"C:\\dir" → "\\" |
| \n | En radmatning | /a\nb/"a\nb" → "a\nb" |
| \t | En tabb | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Ett tecken via dess kodpunkt | /\u00e9/"café" → "é" |
Flaggor
6| Flagga | Namn | Betydelse |
|---|---|---|
| g | Global | Hitta varje matchning, inte bara den första. |
| i | Ignorera skiftläge | Matcha oavsett stora eller små bokstäver. |
| m | Flerradig | Får ^ och $ att matcha vid varje radbrytning i stället för bara vid strängens ändar. |
| s | Dot all | Låter . matcha radbrytningar också. |
| u | Unicode | Behandlar mönstret som kodpunkter och aktiverar \p{…}-egenskapsescapes. |
| y | Sticky | Matchar endast exakt vid lastIndex, söker aldrig framåt. |