Geplaats op 28 september 2015 | Leestijd: 7 minuten
Een reguliere expressie biedt een gestructureerde methode om patronen te definiëren waarmee een computer tekst kan identificeren. Deze methodiek volgt een formele syntaxis, die deels gestandaardiseerd is. Reguliere expressies worden breed toegepast, bijvoorbeeld op websites en in webapplicaties, voor het valideren van e-mailadressen en postcodes. Zo wordt bijvoorbeeld een e-mailadres gecontroleerd op de aanwezigheid van alle vereiste patronen. Hieronder volgen diverse onmisbare reguliere expressies voor Nederlandstalige websites. Deze expressies zijn als voorbeeld in een JavaScript-methode opgesteld, maar ze zijn toepasbaar in verschillende programmeertalen.
Snel naar:
- E-mailadressen valideren
- URL valideren
- Website URL valideren
- Adres valideren
- Postcode valideren
- Telefoonnummer valideren
- IBAN valideren
E-mailadressen valideren
Het valideren van een e-mailadres is een uitdaging. Hoewel we met behulp van een reguliere expressie kunnen controleren of een e-mailadres de juiste syntactische patronen volgt, kunnen we niet met zekerheid zeggen of het ingevoerde e-mailadres ook daadwerkelijk bestaat. Neem bijvoorbeeld "maxima@hetkoningshuis.nl", dit adres kan correct zijn qua syntax, maar het is zeer waarschijnlijk niet echt in gebruik.
Een reguliere expressie stelt ons dus alleen in staat om te verifiëren of de syntax van een e-mailadres correct is. Hieronder vind je een voorbeeld van een reguliere expressie in JavaScript die een e-mailadres valideert.
const validateEmail = (email) => {
const regex = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
return regex.test(email);
}
Direct kopiëren: /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
Bij het bouwen van een webapplicatie bestaat er ook een alternatieve methode om de geldigheid van een e-mailadres te controleren. Door een HTML5 e-mailinvoerveld op een website te gebruiken, zal de browser automatisch de validatie van het e-mailadres uitvoeren.
<form>
<input type="email">
<input type="submit">
</form>
Website URL valideren
Het valideren van een website-URL is net zo uitdagend als het valideren van een e-mailadres. Er zijn diverse patronen die een URL kan aannemen. Bijvoorbeeld: "www.website.nl", "website.nl", "https://website.nl", en "http://website.nl". Al deze notaties kunnen verwijzen naar dezelfde website, maar worden op vier verschillende manieren geschreven. Let op! Een URL is niet alleen een link naar een website, maar kan ook een link zijn naar de ftp-server (ftp://), een telefoonnummer (tel:) of een e-mailadres (mailto:)
URL valideren
Om URL's te valideren, kan de onderstaande code worden gebruikt:
const validateURL = (url) => {
const regex = ^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$;
return regex.test(url);
}
Direct kopiëren: ^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$
Website URL valideren
Om website URL's te valideren, kan de onderstaande code worden gebruikt:
const validateWebsiteURL = (url) => {
const regex = /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi;
return regex.test(url);
}
Direct kopiëren: /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi
Evenals bij het valideren van een e-mailadres, kan ook de browser worden ingezet om een URL te valideren. Dit kan worden bereikt door een invoerveld van het type "url" in de HTML op te nemen.
<form>
<input type="url">
<input type="submit">
</form>
Nederlandse adressen valideren
Het valideren van een Nederlands adres kan ook effectief worden gedaan met behulp van een reguliere expressie. Een adres bestaat typisch uit de naam van een straat en een huisnummer. Soms omvat het huisnummer een toevoeging of bestaat het uit meerdere nummers. Met de onderstaande reguliere expressie kunnen Nederlandse adressen worden gevalideerd:
const validateAddress = (address) => {
const regex = /^([1-9][e][\s])*([a-zA-Z]+(([\.][\s])|([\s]))?)+[1-9][0-9]*(([-][1-9][0-9]*)|([\s]?[a-zA-Z]+))?$/i;
return regex.test(address);
}
Direct kopieren: /^([1-9][e][\s])*([a-zA-Z]+(([\.][\s])|([\s]))?)+[1-9][0-9]*(([-][1-9][0-9]*)|([\s]?[a-zA-Z]+))?$/i
Nederlandse postcodes valideren
Een Nederlandse postcode valideren is vergeleken met het valideren van een e-mailadres minder moeilijk. Het patroon van een postcode wat bestaat uit 4 cijfers en 2 letters is gemakkelijk te valideren. Onderstaand staat een voorbeeld van een reguliere expressie om een postcode te valideren.
const validateZipcode = (zipcode) => {
const regex = /^[1-9][0-9]{3}[\s]?[A-Za-z]{2}$/i;
return regex.test(zipcode);
}
Direct kopiëren: /^[1-9][0-9]{3}[\s]?[A-Za-z]{2}$/i
Deze reguliere expressie valideert zowel postcodes met het patroon: 4 cijfers en 2 letters als 4 cijfers een spatie en 2 letters.
Nederlandse telefoonnummers valideren
Er bestaan twee verschillende typen telefoonnummers: mobiele nummers en vaste nummers. Mobiele nummers volgen doorgaans een ander patroon dan vaste telefoonnummers. Om deze reden moet een telefoonnummer dubbel worden gevalideerd; als een van de patronen wordt herkend, kan worden aangenomen dat het om een geldig telefoonnummer gaat. Hieronder wordt aangegeven hoe een telefoonnummer kan worden gevalideerd in een functie:
const validatePhone = (phone) => {
const vast_nummer = /^(((0)[1-9]{2}[0-9][-]?[1-9][0-9]{5})|((\\+31|0|0031)[1-9][0-9][-]?[1-9][0-9]{6}))$/;
const mobiel_nummer = /^(((\\+31|0|0031)6){1}[1-9]{1}[0-9]{7})$/i;
return (vast_nummer.test(phone) || mobiel_nummer.test(phone));
}
Direct kopiëren: /^(((0)[1-9]{2}[0-9][-]?[1-9][0-9]{5})|((\\+31|0|0031)[1-9][0-9][-]?[1-9][0-9]{6}))$/
Direct kopiëren /^(((\\+31|0|0031)6){1}[1-9]{1}[0-9]{7})$/i
IBAN bankrekeningnummer valideren
Het valideren van een IBAN rekeningnummer kan ook worden gedaan met behulp van een reguliere expressie. IBAN-bankrekeningnummers volgen een vastgesteld patroon dat overeenkomt met de internationale standaard.
const validateIban = (iban) => {
const regex = /^[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}$/i;
return regex.test(iban);
}
Direct kopiëren: /^[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}$/