A PHP Error was encountered

Severity: 8192

Message: Methods with the same name as their class will not be constructors in a future version of PHP; Cacheall_info has a deprecated constructor

Filename: libraries/cacheall_info.php

Line Number: 136

Regex postcode Nederland


Postcode validatie met PHP

Het formulier

• Maak het gebruikers vriendelijk
• De gebruiker mag al of niet een spatie gebruiken en zowel hoofd- als kleine letters invoeren

De html:




Gebruikers vriendelijk betekent ook dat het eerste invoerveld de focus krijgt, de gebruiker kan meteen gaan typen.
Het script:



Het resultaat

Postcode:


De controle met de regex voor de Nederlandse postcode

Verwijder alles wat niet een cijfer of een letter is; en maak er hoofdletters van.



Gebruik een regex om de postcode te controleren.
Op het internet vind je meestal zoiets:

Onjuist want de combinaties SA, SD en SS zijn geen geldige postcodes.

Doordat we nu geen spaties meer hebben en alleen nog hoofdletters, is de controle op de postcode simpeler geworden.



Postcode in gebruik

De regex checkt alleen of het formaat v.d. postcode geldig is.
De 'hoogste' bestaande postcode van Nederland is 9999XL.
Wil je een bestaande postcode.
Dan voeg je nog deze check toe: if ($postcode <= '9999XL') return true;
Dat werkt omdat het alleen hoofdletters betreft.

Minder leesbaar is dit:



Met een negative lookahead



Minder leesbaar is dit:





Als je ook een spatie en kleine letters wilt toe laten:



Of minder leesbaar:



Regex tips

Gebruik de commentaar modus desnoods zonder commentaar!
Het gebruik van accolades in plaats van "/" maakt de regex beter leesbaar en geeft duidelijkere debug messages.
Gebruik liever classes dan | dat is duidelijker leesbaar en sneller dus [Aa] ipv (A|a)
Vermijd tevens het gebruik van escapes dmv character classes dus [] ipv \

Zoek naar:





Vergelijk met



Geef uw commentaar




Mode

De PHP default is de single line mode de string stopt voor de eerste \n
$ = is einde string maar negeert de \n
\z = echt einde regel inclusief de \n (in s mode)


$test_string="start text\n midden \n eind\n"

Pattern {^start.*eind$} result: No match
Pattern {^start.*eind$}s result: A match
Pattern {^start.*eind$}m result: No match
Pattern {^start.*eind$}ms result: A match

Pattern {^start.*text} result: A match
Pattern {^start.*text$}s result: No match
Pattern {^start.*text$}m result: A match
Pattern {^start.*text$}ms result: A match

Pattern {\Astart.*eind\z} result: No match
Pattern {\Astart.*eind\z}s result: No match
Pattern {\Astart.*eind\z}m result: No match
Pattern {\Astart.*eind\z}ms result: No match
Pattern {\Astart.*eind\n\z}s result: A match

Pattern {\Astart.*text\z} result: No match
Pattern {\Astart.*text\z}s result: No match
Pattern {\Astart.*text\z}m result: No match
Pattern {\Astart.*text\z}ms result: No match

REGEX TEST (formaat) '{\A[1-9][0-9]{3}([A-RT-Z][A-Z]|[S][BCE-RT-Z])\z}'

Er wordt slechts 1 fout uitgelegd, voor nog een test herlaadt u de pagina.
OK   5417AS
OK   5846UG
OK   1729GJ
OK   7511MS
!!!!   5967-t   → ongeldig teken
OK   4836RA
OK   3162VD
OK   8916TD
OK   3396VS
!!!!   6971-a   → ongeldig teken
OK   1327HA
!!!!   5965Dt   → een postcode bevat geen kleine letters
!!!!   0569DA   → een postcode begint niet met 0
OK   3528AY
OK   1716ZP
!!!!   -956UD   → ongeldig teken
OK   5590RS
OK   9879MD
!!!!   589-tS   → ongeldig teken
!!!!   5893-P   → ongeldig teken
OK   4327TD
!!!!   9498SS   → SS Schutzstaffel
OK   8949SX
OK   4873KD
!!!!   29-3SY   → ongeldig teken
!!!!   5298SA   → SA Sturmabteilung
OK   9371SQ
OK   1862HX
!!!!   0697XA   → een postcode begint niet met 0
!!!!   4811kP   → een postcode bevat geen kleine letters
OK   5873DC
OK   5851UX
!!!!   6727kA   → een postcode bevat geen kleine letters
OK   5618BA
OK   9861NS
!!!!   -784AS   → ongeldig teken
OK   3518GD
OK   2967TA
OK   6852GD
!!!!   -568AC   → ongeldig teken
!!!!   1766A-   → ongeldig teken
OK   3371AD
OK   8237ZX
OK   9215DD
OK   8175YF
OK   7263CS
!!!!   0236AD   → een postcode begint niet met 0
!!!!   -058SC   → ongeldig teken
!!!!   25-9PD   → ongeldig teken
OK   5170HJ
OK   6858AD
OK   3514AJ
OK   6495HC
OK   5736DV
OK   6685YM
!!!!   41-2Sa   → ongeldig teken
!!!!   0165BX   → een postcode begint niet met 0
!!!!   892-KJ   → ongeldig teken
!!!!   84-6YD   → ongeldig teken
OK   7317YA
!!!!   8726tX   → een postcode bevat geen kleine letters
!!!!   8792tK   → een postcode bevat geen kleine letters
!!!!   556-Z-   → ongeldig teken
!!!!   4926Sa   → een postcode bevat geen kleine letters
!!!!   682-aD   → ongeldig teken
OK   5778SK
OK   9272BS
OK   8013DD
OK   7618AW
!!!!   4613tT   → een postcode bevat geen kleine letters
OK   5572SR
OK   3182TR
OK   7667CK
!!!!   8671J-   → ongeldig teken
OK   1573AF
OK   9148JC
OK   1728ZX
OK   3211RW
!!!!   3141SS   → SS Schutzstaffel
OK   3288US
!!!!   7182aS   → een postcode bevat geen kleine letters
OK   5329DD
!!!!   0132ZC   → een postcode begint niet met 0
!!!!   7234SA   → SA Sturmabteilung
OK   7310DX
!!!!   18-5tQ   → ongeldig teken
OK   6819AS
!!!!   2236Ek   → een postcode bevat geen kleine letters
!!!!   9615SD   → SD Sicherheitsdienst
!!!!   949-VA   → ongeldig teken
!!!!   2-89SS   → ongeldig teken
OK   1036AP
!!!!   7-10SS   → ongeldig teken
OK   1652DA
OK   5347ST
OK   6347BK
!!!!   2-92DX   → ongeldig teken
OK   9232MS
OK   3265SE
!!!!   2464tT   → een postcode bevat geen kleine letters

tags Regex postcode,Regex Nederlandse postcode,Regular expression voor Nederlandse postcode,regex dutch zipcode, Postcode check for Netherlands