Nederlandse reguliere expressies

Een reguliere expressie is een manier om patronen te beschrijven waarmee een computer tekst kan herkennen. Er bestaat hiervoor een formele syntaxis, die deels is gestandaardiseerd. Reguliere expressies worden bijvoorbeeld op websites en in webapplicaties gebruikt om e-mailadressen en postcodes te valideren. Een e-mailadres wordt dan gecontroleerd of alle juiste patronen aanwezig zijn. Onderstaand staan veel reguliere expressie die niet kunnen missen op een Nederlandstalige website. Deze reguliere expressies zijn in javascript geschreven, maar de reguliere expressies kunnen ook gebruikt worden binnen PHP.

E-mailadressen valideren

Het valideren van een e-mailadres is lastig. We kunnen met een reguliere expressie controleren of een e-mailadres de juiste patronen heeft, maar we weten niet of het ingevoerde e-mailadres een echt e-mailadres is. Als voorbeeld; maxima@hetkoningshuis.nl klopt qua syntax, maar dit e-mailadres zal zeer waarschijnlijk niet echt bestaan.

Met een reguliere expressie kan dus alleen worden gecontroleerd of de syntax van een e-mailadres correct is. Onderstaand staat een voorbeeld van een reguliere expressie in javascript die een e-mailadres valideert.

function validateEmail(email) {
    var 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

Een andere manier om een e-mailadres te valideren is om op een website een html5 e-mail input te detineren. De browser zal dan het e-mailadres al valideren. Echter als de bezoeker een oudere browser heeft zal deze methode niet werken. Het is aan te raden om ook altijd in javascript een validatie uit te voeren.

<form>
    <input type="email">
    <input type="submit">
</form>


Website URL valideren

Het valideren van een website URL is net zoals het valideren van een e-mailadres lastig. Er zijn veel verschillende patronen in een URL. Voorbeelden zijn; www.website.nl website.nl https://website.nl en http://website.nl. Dit zou dezelfde website kunnen zijn, maar is op 4 manieren te schrijven. Om URL's te valideren zou onderstaande code gebruikt kunnen worden.

function validateURL(url) {
    var 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]*)?$

Net zoals bij de validatie van een e-mail kan ook de browser gebruikt worden om een URL te valideren. Dit kan door een input 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 is uitstekend te valideren met een reguliere expressie. Een adresregel bestaat uit de naam van een straat en een huisnummer. In sommige gevallen heeft het huisnummer een toevoeging of bestaat het huisnummer uit verschillende nummers. Met onderstaande reguliere expressie kunnen Nederlandse adressen worden gevalideerd.

function validateAddress(address) {
    var 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.

function validateZipcode(zipcode) {
    var 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 zijn twee verschillende type telefoonnummers; mobiele nummers en vaste nummers. Een mobiele nummer heeft een ander patroon dan een vaste telefoonnummer. Er telefoonnummer moet daarom dubbel worden gevalideerd, als één van de patronen aanwezig is kan er van uit worden gegaan dat het een telefoonnummer betreft. In onderstaande functie wordt aangegeven hoe een telefoonnummer kan worden gevalideerd.

function validatePhone(phone) {
    var 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}))$/;
    var 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

Ook een IBAN rekeningnummer kunnen we met behulp van een reguliere expressie valideren. De bankrekeningnummers bestaan uit een afgesproken vast patroon.

function validateIban(iban) {
    var 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}$/