ToolHub
View All Posts

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

PatroonBetekenisVoorbeeld
.Elk teken behalve regeleindea.c matcht abc, a1c, a c
\dElk cijfer (0-9)\d\d matcht 42
\DElk niet-cijfer\D matcht a, !, spatie
\wWoordteken (a-z, A-Z, 0-9, _)\w+ matcht hello_123
\WNiet-woordteken\W matcht @, #, spatie
\sWitruimte (spatie, tab, regeleinde)a\sb matcht a b
\SNiet-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

PatroonBetekenisVoorbeeld
*Nul of meerab*c matcht ac, abc, abbc
+Één of meerab+c matcht abc, abbc
?Nul of ééncolou?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

PatroonBetekenisVoorbeeld
^Begin van tekenreeks of regel^Hello matcht Hello aan het begin
$Einde van tekenreeks of regelworld$ matcht world aan het einde
\bWoordgrens\bcat\b matcht cat alleen
\BNiet-woordgrens\Bcat matcht scattered

Groepen en Alternatie

PatroonBetekenisVoorbeeld
(abc)Vastleggende groep(ab)+ matcht abab
(?:abc)Niet-vastleggende groep(?:ab)+ matcht abab
a|bAlternatie (of)cat|dog matcht cat of dog
\1Terugverwijzing naar groep 1(\w)\1 matcht aa, bb
abc)Benoemde vastleggende groepGerefereerd 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.

Greedy vs. Lazy Matching

<.*>bold<.*?>" matcht.

Pro Tip: Bij het extraheren van inhoud tussen scheidingstekens zoals HTML-tags of aanhalingstekens, gebruik altijd lazy kwantoren om te voorkomen dat je te veel tekst matcht. Greedy matching is de meest voorkomende bron van regex-bugs.

Regex Prestatietips

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 Spiekbriefje

Veelgestelde 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.