Regex fuskblad
Reguljära uttryck är tillräckligt kompakta för att syntaxen är lättare att slå upp än att memorera. Den här sidan är allt på en skärm – klasser, kvantifierare, ankare, grupper, lookaround, escape och flaggorna – med ett fungerande exempel för varje rad.
Smaken är JavaScript, vilket är det som körs i din webbläsare och vad regex-testaren på den här webbplatsen använder. Det mesta är identiskt i Python, Java, Go och PCRE; där smakerna divergerar, divergerar de på kanterna — se efter stöd, syntax för namngivna grupper och om \d betyder "ASCII-siffra" eller "valfri Unicode-siffra".
Två saker står för de flesta av överraskningarna. Kvantifierare är giriga: de tar allt de kan och lämnar tillbaka bara när resten av mönstret misslyckas, vilket är anledningen till att <.+> sväljer två taggar och <.+?> inte gör det. Och alternering binder lösast av alla, så ^a|b$ betyder "börjar med a, eller slutar med b" - inte vad de flesta tänker när de skriver det.
Karaktärsklasser
Stenografierna är endast för ASCII om du inte lägger till u-flaggan och använder Unicode-egenskapsavvikelser.
| Syntax | Menande | Exempel |
|---|---|---|
| . | Vilket tecken som helst utom en radbrytningLägg till s-flaggan för att få den att matcha nya rader 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 | Något \w inte matchar | /\W+/"a++b" → "++" |
| \s | Alla blanksteg, inklusive flikar och nyrader | /\s+/"a \t b" → " \t " |
| \S | Alla tecken som inte är blanksteg | /\S+/" hi" → "hi" |
| [abc] | Vilken som helst av de listade karaktärerna | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Alla tecken utom de listade | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | En rad karaktärer | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Vilken Unicode-bokstav som helst (kräver u-flaggan) | /\p{L}+/"42 café" → "café" |
Kvantifierare
Alla dessa är giriga som standard: de tar så mycket de kan och ger tillbaka bara om resten av mönstret misslyckas.
| Syntax | Menande | Exempel |
|---|---|---|
| * | Noll eller mer | /ab*/"a" → "a" |
| + | En eller flera | /ab+/"abbb" → "abbb" |
| ? | Noll eller ett — 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" |
| *? | Lata — tar så lite som möjligtDen girige <.+> skulle svälja båda taggarna. | /<.+?>/"<a><b>" → "<a>" |
Ankare och gränser
Dessa matchar en position, inte en karaktär, så de förbrukar ingenting.
| Syntax | Menande | Exempel |
|---|---|---|
| ^ | Början av strängen, eller av en linje med flaggan m | /^a/"abc" → "a" |
| $ | Slutet på strängen, eller på en linje med flaggan m | /c$/"abc" → "c" |
| \b | En ordgränsDetta är vad som stoppar "katt"-matchning inuti "sammanfoga". | /\bcat\b/"the cat sat" → "cat" |
| \B | Inte en ordgräns | /\Bcat/"concatenate" → "cat" |
Grupper och växling
| Syntax | Menande | Exempel |
|---|---|---|
| (abc) | Fånga grupp — ihågkommen för ersättning | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Gruppering utan att fångaAnvänd detta när du bara behöver grupperingen; det håller fånga siffror meningsfulla. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Namngiven fångstgrupp | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Vardera sidan — växlingAlternering har den lägsta prioritet: ^a|b$ är "^a" eller "b$", inte "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Återreferens till den första gruppen | /(\w)\1/"letter" → "tt" |
Se dig omkring
På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 | Menande | Exempel |
|---|---|---|
| (?=…) | Lookahead — följt av detta | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negativ framtidsutsikt – följs inte av detta | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind — föregås av detta | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negativ lookbehind - inte föregås av detta | /(?<!\$)\b\d+/"about 40" → "40" |
Flyr
Dessa tolv karaktärer är de som behöver ett snedstreck för att tas bokstavligt.
| Syntax | Menande | Exempel |
|---|---|---|
| \. | En bokstavlig prick | /\d\.\d/"v2.5" → "2.5" |
| \\ | Ett bokstavligt snedstreck | /\\/"C:\\dir" → "\\" |
| \n | En radmatning | /a\nb/"a\nb" → "a\nb" |
| \t | En flik | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Ett tecken efter dess kodpunkt | /\u00e9/"café" → "é" |
Flaggor
| Flagga | Namn | Menande |
|---|---|---|
| g | Global | Hitta varje match, inte bara den första. |
| i | Ignorera skiftläge | Matcha oavsett versaler eller gemener. |
| m | Flerlinje | Får ^ och $ att matcha vid varje radbrytning istället för bara i ändarna av strängen. |
| s | Prick alla | Låt oss. match radbrytningar också. |
| u | Unicode | Behandlar mönstret som kodpunkter och aktiverar \p{...}-egenskapsflykt. |
| y | Klibbig | Matchar endast vid exakt lastIndex, söker aldrig framåt. |