ToolHub
View All Posts

Essentiële Regex Patronen Die Elke Ontwikkelaar Moet Kennen

Reguliere expressies (regex) zijn een van de krachtigste hulpmiddelen in de gereedschapskist van een ontwikkelaar. Ze stellen je in staat om tekst te zoeken, valideren en transformeren met beknopte patronen die tientallen regels procedurele code zouden vereisen. Hoewel regex-syntax aanvankelijk cryptisch kan lijken, dekt het beheersen van een kernset patronen de overgrote meerderheid van real-world gebruiksscenario's. Deze handleiding presenteert de essentiële regex-patronen die je herhaaldelijk zult gebruiken, met gedetailleerde uitleg van hoe elk werkt.

Regex Basis Opfrisser

Voordat we in specifieke patronen duiken, hier is een korte opfrisser van de metatekens die de bouwstenen vormen van alle regex-patronen:

MetatekenBetekenisVoorbeeld
.Elk enkel tekena.c matcht abc, a1c, a c
*Nul of meer van vorigeab*c matcht ac, abc, abbc
+Één of meer van vorigeab+c matcht abc, abbc
?Nul of één van vorigecolou?r matcht color, colour
^Begin van tekenreeks^Hello matcht Hello aan het begin
$Einde van tekenreeksworld$ matcht world aan het einde
[]Tekenklasse[aeiou] matcht elke klinker
()Vastleggende groep(ab)+ matcht ab, abab
|Alternatie (OF)cat|dog matcht cat of dog
\dCijfer [0-9]\d{3} matcht 123
\wWoordteken [a-zA-Z0-9_]\w+ matcht hello_123
\sWitruimtea\sb matcht a b

1. E-mailvalidatie

Basis E-mail Patroon

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Dit patroon valideert de basisstructuur van een e-mailadres: één of meer toegestane tekens vóór de @ , gevolgd door een domeinnaam met tenminste één punt en een top-level domein van twee of meer letters. Het vangt de meeste ongeldige formaten terwijl legitieme adressen worden toegestaan.

Matcht: user@example.com, john.doe+tag@company.co.uk

Matcht niet: user@, @example.com, user@.com

Belangrijk: Geen regex kan alle geldige e-mailadressen perfect valideren volgens RFC 5322. Gebruik dit patroon voor basis formaatcontrole, verifieer het adres dan door een bevestigings-e-mail te sturen. Voor productie-applicaties, combineer regex-validatie met domeinverificatie.

2. URL-validatie

HTTP/HTTPS URL Patroon

^https?:\/\/(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$

Dit patroon matcht HTTP- en HTTPS-URL's met optioneel www-voorvoegsel, een domeinnaam en een optioneel pad. De s? maakt de "s" in https optioneel, en (www\.)? maakt het www-voorvoegsel optioneel. Het padsegment (\/[^\s]*)? staat alle tekens behalve witruimte na het domein toe.

Matcht: https://example.com, http://www.example.com/path/to/page

Matcht niet: ftp://example.com, example.com (geen protocol)

3. Telefoonnummervalidatie

Internationaal Telefoonnummer

^\+?[1-9]\d{1,14}$

Dit patroon volgt het E.164 internationale telefoonnummerformaat. Het staat een optioneel + voorvoegsel toe, vereist dat het eerste cijfer 1-9 is (geen voorloopnullen) en staat tot 15 cijfers totaal toe. Dit is het meest betrouwbare formaat voor het opslaan en valideren van telefoonnummers internationaal.

Matcht: +14155552671, 442071838750

Matcht niet: +01xxxxxxxxx, 123

4. Wachtwoordsterkte

Sterk Wachtwoord Patroon

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Dit patroon handhaaft een sterk wachtwoordbeleid: tenminste 8 tekens, met tenminste één kleine letter, één hoofdletter, één cijfer en één speciaal teken. De (?=.*[...]) syntax gebruikt positieve lookaheads om de aanwezigheid van elk tekentype te controleren zonder tekens te consumeren.

Matcht: MyP@ss1word, Str0ng!Pass

Matcht niet: password, Password1, P@ss

5. IP-adresvalidatie

IPv4-adres

^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$

Dit patroon valideert IPv4-adressen met juiste bereikcontrole. Elke octet moet tussen 0 en 255 liggen. Het patroon gebruikt alternatie om te matchen: 250-255 ( 25[0-5] ), 200-249 ( 2[0-4]\d ), of 0-199 ( [01]?\d\d? ). Dit wordt drie keer herhaald met punten, dan nog eens voor de laatste octet.

Matcht: 192.168.1.1, 10.0.0.1, 255.255.255.0

Matcht niet: 256.1.1.1, 192.168.1, 192.168.1.1.1

6. Datumformaatvalidatie

YYYY-MM-DD (ISO 8601)

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

Dit patroon valideert datums in ISO 8601-formaat (YYYY-MM-DD). Het controleert op een viercijferig jaar, een maand tussen 01-12 en een dag tussen 01-31. Merk op dat dit patroon het formaat valideert maar niet de logische geldigheid van de datum (het staat bijvoorbeeld 2026-02-31 toe). Voor volledige validatie, parseer de datum en controleer deze programmatisch.

Matcht: 2026-05-20, 2025-01-01, 2024-12-31

Matcht niet: 2026-5-20, 2026-13-01, 26-05-20

7. Hexadecimale Kleurcode

CSS Hex-kleur

^#(?:[0-9a-fA-F]{3}){1,2}$

Dit patroon matcht CSS hex-kleurcodes in zowel het 3-tekens korte formaat ( #fff ) als de 6-tekens volledige vorm ( #ffffff ). De {1,2} kwantor staat ofwel één ofwel twee herhalingen van de 3-hex-tekens groep toe, waardoor beide formaten worden ondersteund.

Matcht: #fff, #FF5733, #1e293b

Matcht niet: fff, #ff, #1234567

8. Slug / URL-Veilige Tekenreeks

URL-slug Patroon

^[a-z0-9]+(?:-[a-z0-9]+)*$

Dit patroon valideert URL-slugs: kleine alfanumerieke tekenreeksen met koppeltekens als scheidingstekens. Het zorgt voor geen voorloop- of naloop-koppeltekens en geen opeenvolgende koppeltekens. Dit formaat is SEO-vriendelijk en veilig voor gebruik in URL's, bestandsnamen en identifiers.

Matcht: my-blog-post, regex-patterns-guide, tool123

Matcht niet: My-Post, -slug, slug-, my--post

9. Creditcardnummer

Algemeen Creditcard Patroon

^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$

Dit patroon valideert creditcardnummers van grote maatschappijen: Visa (begint met 4, 13 of 16 cijfers), Mastercard (begint met 51-55, 16 cijfers), American Express (begint met 34 of 37, 15 cijfers) en Discover (begint met 6011 of 65, 16 cijfers). Combineer dit met het Luhn-algoritme voor volledige validatie.

10. HTML-tag Matching

HTML-tag Extractie

<([a-z][a-z0-9]*)\b[^>]*>(.*?)<\/\1>

Dit patroon matcht openende en sluitende HTML-tags met hun inhoud. De eerste vastleggende groep ([a-z][a-z0-9]*) legt de tagnaam vast, en de terugverwijzing \1 zorgt ervoor dat de sluitende tag overeenkomt met de openende tag. De (.*?) legt de inhoud tussen tags vast met lazy matching om de kortste match te krijgen.

Tips voor het Schrijven van Betere Regex

Wil je deze regex-patronen interactief testen? Probeer onze gratis Regex Tester met real-time matching, visualisatie van vastleggende groepen en patroonuitleg.

Test Regex Patronen

Veelgestelde Vragen

Wat is een regex-patroon?

Een regex-patroon (reguliere expressie) is een reeks tekens die een zoekpatroon definieert. Het wordt gebruikt voor tekenreeksmatching, validatie, zoek-en-vervang operaties en tekst-parsing. Regex-patronen gebruiken speciale metatekens zoals ., *, +, ?, [], () en {} om flexibele matchingregels te definiëren.

Moet ik regex gebruiken voor e-mailvalidatie?

Gebruik regex voor basis e-mailformaatvalidatie (controleren op @-symbool, domeinstructuur), maar probeer niet om e-mailadressen volledig te valideren met regex alleen. De e-mail-specificatie (RFC 5322) is extreem complex en geen regex kan alle geldige adressen perfect valideren. Voor productiegebruik, combineer basis regex-validatie met werkelijke e-mailverificatie (een bevestigingslink sturen).

Wat is het verschil tussen greedy en lazy kwantoren?

Greedy kwantoren (*, +) matchen zoveel mogelijk tekst, terwijl lazy kwantoren (*?, +?) zo weinig mogelijk tekst matchen. Toegepast op 'aabb' matcht het greedy patroon a.*b bijvoorbeeld 'aabb' (de hele tekenreeks), terwijl het lazy patroon a.*?b alleen 'aab' matcht (de kortste match).

Hoe test ik regex-patronen?

Gebruik online regex-testers zoals de ToolHub Regex Tester om patronen interactief te testen tegen voorbeeldtekst. Deze tools markeren overeenkomsten in real-time, tonen vastleggende groepen en leggen uit wat elk deel van het patroon doet.

Zijn regex-patronen hetzelfde in alle programmeertalen?

De meeste regex-syntax wordt gedeeld tussen talen, maar er zijn verschillen in geavanceerde functies. JavaScript ondersteunt geen lookbehind-beweringen in oudere engines, Python gebruikt andere syntax voor benoemde groepen dan JavaScript, en PCRE (PHP) ondersteunt meer functies dan de meeste andere engines. Test patronen altijd in je doeltaal.