Reguliere Expressies Spiekbriefje en Veelvoorkomende Patronen
Reguliere expressies, of regex, zijn krachtige patroonherkenningshulpmiddelen die in vrijwel elke programmeertaal en teksteditor worden gebruikt. Hoewel de syntax aanvankelijk cryptisch kan lijken, ontgrendelt het beheersen van regex de mogelijkheid om tekst te zoeken, valideren, extraheren en transformeren met een precisie die tientallen regels procedurele code zou vereisen. Deze handleiding behandelt de essentiële syntax, veelvoorkomende patronen en praktische technieken die je moet kennen.
Basis Regex Syntax Spiekbriefje
Tekenklassen
| Patroon | Betekenis | Voorbeeld |
|---|---|---|
| . | Elk teken behalve regeleinde | a.c matcht abc, a1c, a c |
| \d | Elk cijfer (0-9) | \d\d matcht 42 |
| \D | Elk niet-cijfer | \D matcht a, !, spatie |
| \w | Woordteken (a-z, A-Z, 0-9, _) | \w+ matcht hello_123 |
| \W | Niet-woordteken | \W matcht @, #, spatie |
| \s | Witruimte (spatie, tab, regeleinde) | a\sb matcht a b |
| \S | Niet-witruimte | \S+ matcht hello |
| [abc] | Elk teken in de set | [aeiou] matcht een klinker |
| [^abc] | Elk teken niet in de set | [^0-9] matcht niet-cijfers |
| [a-z] | Tekenbereik | [A-Za-z] matcht elke letter |
Kwantoren
| Patroon | Betekenis | Voorbeeld |
|---|---|---|
| * | Nul of meer | ab*c matcht ac, abc, abbc |
| + | Één of meer | ab+c matcht abc, abbc |
| ? | Nul of één | colou?r matcht color, colour |
| {n} | Exact n keer | \d{4} matcht 4 cijfers |
| {n,} | n of meer keer | \d{2,} matcht 2+ cijfers |
| {n,m} | Tussen n en m keer | \d{3,5} matcht 3-5 cijfers |
Ankers en Grenzen
| Patroon | Betekenis | Voorbeeld |
|---|---|---|
| ^ | Begin van tekenreeks of regel | ^Hello matcht Hello aan het begin |
| $ | Einde van tekenreeks of regel | world$ matcht world aan het einde |
| \b | Woordgrens | \bcat\b matcht cat alleen |
| \B | Niet-woordgrens | \Bcat matcht scattered |
Groepen en Alternatie
| Patroon | Betekenis | Voorbeeld |
|---|---|---|
| (abc) | Vastleggende groep | (ab)+ matcht abab |
| (?:abc) | Niet-vastleggende groep | (?:ab)+ matcht abab |
| a|b | Alternatie (of) | cat|dog matcht cat of dog |
| \1 | Terugverwijzing naar groep 1 | (\w)\1 matcht aa, bb |
| Benoemde vastleggende groep | Gerefereerd als name |
Veelvoorkomende Regex Patronen
Hier zijn de meest frequent benodigde regex-patronen voor webontwikkeling en datavalidatie:
E-mailvalidatie
Een praktische e-mail regex die de meeste ongeldige adressen detecteert zonder overdreven streng te zijn: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ . Dit patroon valideert de basisstructuur van een e-mailadres terwijl het veelvoorkomende tekens in het lokale deel toestaat en een geldig domein vereist met een TLD van tenminste twee tekens.
URL-validatie
Om HTTP- en HTTPS-URL's te matchen: ^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$ . Dit patroon matcht URL's met optioneel www-voorvoegsel, een domeinnaam en een optioneel pad.
Telefoonnummer (VS)
Voor Amerikaanse telefoonnummers in verschillende formaten: ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ . Dit verwerkt formaten zoals (555) 123-4567, 555-123-4567 en 5551234567.
IP-adres (IPv4)
Om IPv4-adressen te valideren: ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$ . Dit zorgt ervoor dat elke octet tussen 0 en 255 ligt.
Datum (YYYY-MM-DD)
Voor ISO-datumformaat: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ . Dit valideert de formaatstructuur maar controleert niet op geldige dagen in elke maand.
Hexadecimale Kleurcode
Om CSS hex-kleuren te matchen: ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ . Dit matcht zowel het 3-tekens korte formaat (#fff) als het 6-tekens formaat (#ffffff).
Geavanceerde Technieken
Vooruit- en Achteruitkijken
Lookahead- en lookbehind-beweringen laten je patronen matchen alleen wanneer ze (of niet) worden gevolgd of voorafgegaan door een ander patroon, zonder de omringende tekst in de match op te nemen.
- Positieve lookahead (?=patroon) : Matcht alleen als het patroon volgt. Voorbeeld: \d(?=px) matcht een cijfer alleen vóór "px".
- Negatieve lookahead (?!patroon) : Matcht alleen als het patroon niet volgt. Voorbeeld: \d(?!px) matcht een cijfer niet vóór "px".
- <=patroon) : Matcht alleen als het patroon voorafgaat. Voorbeeld: (?<=\$)\d+ matcht nummers na een dollarteken.
Greedy vs. Lazy Matching
<.*>bold<.*?>" matcht.
Regex Prestatietips
- Gebruik niet-vastleggende groepen (?:) wanneer je de inhoud van de gematchte groep niet hoeft te extraheren
- Vermijd overmatige backtracking door possessive kwantoren of atomic groups te gebruiken waar ondersteund
- Wees specifiek met tekenklassen in plaats van de punt-metateken breed te gebruiken
- Veranker je patronen met ^ en $ wanneer je de hele tekenreeks moet matchen
- Pre-compileer regex-patronen wanneer je ze herhaaldelijk in lussen gebruikt
- Gebruik woordgrenzen \b in plaats van ^ en $ bij het zoeken binnen grotere tekst
Regex Testen en Debuggen
Test je regex-patronen altijd met real-world invoer voordat je ze implementeert. Gebruik een interactieve regex-tester die overeenkomsten in real-time markeert en elk deel van het patroon uitlegt. Dit helpt je randgevallen op te sporen en te begrijpen waarom een patroon al dan niet matcht met specifieke invoer. Probeer onze gratis Regex Tester om je patronen interactief te bouwen en testen.
Bouw, test en debug je regex-patronen met onze gratis tools.
Probeer Onze Regex TesterRegex SpiekbriefjeVeelgestelde Vragen
Wat is het verschil tussen greedy en lazy regex matching?
Greedy kwantoren matchen zoveel mogelijk tekst, terwijl lazy kwantoren zo weinig mogelijk matchen. Het toevoegen van een vraagteken na een kwantor maakt het lazy. .* matcht bijvoorbeeld de langst mogelijke tekenreeks, terwijl .*? de kortste matcht.
Zijn reguliere expressies hetzelfde in alle programmeertalen?
Nee, regex-implementaties variëren tussen talen. De meeste ondersteunen de basis POSIX-syntax, maar geavanceerde functies zoals lookbehind, benoemde groepen en Unicode-ondersteuning verschillen. JavaScript had historisch beperkte regex-ondersteuning maar heeft in recente versies veel functies toegevoegd.
Kan regex HTML of XML parsen?
Nee, reguliere expressies kunnen HTML of XML niet betrouwbaar parsen omdat dit geneste, contextvrije talen zijn. Regex heeft geen concept van nestingsdiepte of gebalanceerde tags. Gebruik in plaats daarvan een goede HTML- of XML-parser. Regex kan eenvoudige patronen uit HTML extraheren, maar faalt bij complexe structuren.
Wat zijn lookahead en lookbehind in regex?
<=patroon) is een positieve lookbehind die matcht als het patroon voorafgaat. Negatieve versies gebruiken ! in plaats van =.
Hoe maak ik mijn regex hoofdletterongevoelig?
Voeg de i-vlag toe na het afsluitende scheidingsteken om het hele patroon hoofdletterongevoelig te maken. In JavaScript gebruik je /patroon/i. In Python gebruik je re.IGNORECASE of re.I als vlag. Je kunt ook (?i) inline gebruiken om specifieke delen hoofdletterongevoelig te maken.
ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.