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:
| Metateken | Betekenis | Voorbeeld |
|---|---|---|
| . | Elk enkel teken | a.c matcht abc, a1c, a c |
| * | Nul of meer van vorige | ab*c matcht ac, abc, abbc |
| + | Één of meer van vorige | ab+c matcht abc, abbc |
| ? | Nul of één van vorige | colou?r matcht color, colour |
| ^ | Begin van tekenreeks | ^Hello matcht Hello aan het begin |
| $ | Einde van tekenreeks | world$ matcht world aan het einde |
| [] | Tekenklasse | [aeiou] matcht elke klinker |
| () | Vastleggende groep | (ab)+ matcht ab, abab |
| | | Alternatie (OF) | cat|dog matcht cat of dog |
| \d | Cijfer [0-9] | \d{3} matcht 123 |
| \w | Woordteken [a-zA-Z0-9_] | \w+ matcht hello_123 |
| \s | Witruimte | a\sb matcht a b |
1. E-mailvalidatie
Basis E-mail Patroon
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
2. URL-validatie
HTTP/HTTPS URL Patroon
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
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
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
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)
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
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
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
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
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
- Begin eenvoudig: Schrijf eerst de meest basale versie van je patroon, voeg dan incrementeel complexiteit toe. Test bij elke stap.
- Gebruik tekenklassen: [a-z] is duidelijker dan (a|b|c|...|z) . Benoemde klassen zoals \d , \w en \s verbeteren leesbaarheid.
- Voorkeur voor lazy kwantoren: Gebruik *? en +? in plaats van * en + wanneer je de kortste match wilt om greedy over-matching te vermijden.
- Gebruik ankers: Gebruik altijd ^ en $ voor validatiepatronen om ervoor te zorgen dat de hele tekenreeks matcht, niet alleen een subtekenreeks.
- Vermijd catastrofale backtracking: Geneste kwantoren zoals (a+)+ kunnen exponentiële tijdscomplexiteit veroorzaken op bepaalde invoer. Gebruik atomic groups of possessive kwantoren waar beschikbaar.
- Commentarieer complexe patronen: Gebruik de x-vlag (verbose mode) om witruimte en opmerkingen toe te voegen aan complexe patronen.
Wil je deze regex-patronen interactief testen? Probeer onze gratis Regex Tester met real-time matching, visualisatie van vastleggende groepen en patroonuitleg.
Test Regex PatronenVeelgestelde 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.