You should periodically update your copy of the database to the latest version.Note that this function only validates the format of a postcode and does not validate that the postcode exists; this would require access to the Royal Mail database.Creating a function to validate UK postcodes would seem like a simple task, but there is a little more to it than checking the number of characters.In fact there are several different variants of UK postal codes, especially if you include BFPO and overseas addresses.:) The original version I found was a little out of date as it used the old ereg PHP regular expression functions, which caused deprecated errors in PHP 5.3.At the time I was creating a search feature that used full and partial postcodes so I also changed the function to be able to detect both. Note that the postcode is passed by reference so if a postcode is found it is standardised into a correct format.Question is, why you can't add the space to your pattern?Only if we know why you fail this question can be answered (what I mean is, just try to explain the problem after the code in your own words, like what your mental concept is to insert a space to the pattern and why you don't know/see where to add it).
Thankfully, John Gardner took the time to write a little function that is able to validate a UK postcode, and this has been coppied all over the internet.
If you don’t want to write your own code to access the service, you can use my mapit-lookup class to perform basic postcode verification.
These two fields both have a number, letter and a space.
Especially as you're looking for "official sources" now with your bounty. But not all address line 1's have a number, Some just have a name.
eg House Name, Street Name if your happy with your regex and you just want it to accept a space.