Ho già risposto una volta, sottolineando che non è possibile ottenere una regex corretta solo al 100% corretta (poiché le aree del codice postale non si trovano lungo i confini politici).
Tuttavia ho scavato un po 'più a fondo in questo, e ... beh, è possibile , ma è un sacco di lavoro.
Per verificare un codice postale solo in Inghilterra, è necessario escludere i codici postali non inglesi. I più facili sono:
- BT (Irlanda del Nord)
- IM (Isola di Man)
- JE (Jersey)
- GG (Guernsey)
- BF (forze britanniche)
- (i codici postali del Regno Unito non geografiche) BX
- GIR (Girobank, che è anche non geografico)
(io non ho intenzione di parlare di codici postali in stile britannico per i territori al di fuori del Regno Unito come St Helena, Gibilterra ecc. Tecnicamente parlando, l'Isola di Man e le Channel Islands non fanno parte del Regno Unito, ma sono molto più vicine e più strettamente legate al sistema Royal Mail nel Regno Unito.)
Il CAP puramente scozzese aree sono (come lei ha ricordato):
ZE, KW, IV, HS, PH, AB, DD, PA, FK, G, KY, KA, EH, ML
DG e TD sono nominalmente scozzese, e sono per la maggior parte in Scozia. Tuttavia alcune aree si estendono oltre il confine Scozia-Inghilterra come segue:
- DG16 - un pochino in Inghilterra
- TD9 - un pochino in Inghilterra
- TD12 - mezzo in Inghilterra
- TD15 - per lo più in Inghilterra
La composizione è la seguente:
DG16 è in Scozia ad eccezione delle seguenti codici postali inglesi:
- DG16 5H [TUZ]
- DG16 5J [AB]
TD9 è in Scozia ad eccezione di TD9 0T [JPRSTUW]
TD12 ha un solo settore (TD12 4), che si sviluppa circa metà e metà in Inghilterra e Scozia:
- TD12 4 [ABDEHJLN] sono in Scozia
- TD12 4 [QRSTUWX] sono in Inghilterra
TD15 è il più complicato. Ci sono 3 settori, di cui TD15 2 e TD15 9 sono interamente in Inghilterra.
TD15 1 è suddiviso tra Inghilterra e Scozia.
Postcodes inizio nel modo seguente sono in Scozia:
...tranne che per questi codici postali inglesi:
Tutti gli altri codici di avviamento postale in TD15 1 sono in Inghilterra, ad eccezione di quelli che iniziano come segue:
- TD15 1B
- TD15 1S (ad es. TD15 1S [ABEJLNPWXY])
- TD15 1U (cioè TD15 1U [BDENPQRTUXY])
... che sono tutti in Inghilterra, con l'eccezione dei seguenti codici di avviamento postale che si trovano in Scozia:
- TD15 1BT
- TD15 1S [UZ]
- TD15 1U [FGHJLSZ]
Inglese zone postali CA e NE si trovano dall'altra parte del confine fra l'Inghilterra-Scozia, tuttavia essi non si estendono in Scozia.
In effetti, le ultime due lettere di un codice postale nel Regno Unito si basano su come il postino consegna effettivamente post (per quanto ne so), quindi non è dato per scontato che cadrà all'interno di un confine politico. Quindi, se c'è un gruppo di case che si trova a cavallo del confine, allora è possibile che l'intero codice postale (cioè al livello più fine) non si trovi interamente in Inghilterra o in Scozia. Per esempio. TD9 0TJ e TD15 1UZ sono molto vicini al confine e non so per certo se sono interamente su un lato o meno.
Il confine tra Inghilterra e Galles è anche complicato, tuttavia lascerò questo come esercizio per il lettore.
Anche quanti codici ci sono per la Scozia, il Galles e l'Irlanda del Nord? Perché potrebbe essere più facile associare i negativi ai positivi a seconda dei numeri. – Hersha
@Hersha Sì, stavo progettando di fare i negativi – Robbie
MK, Milton Keynes manca dalla tua regex http://en.wikipedia.org/wiki/List_of_postcode_areas_in_the_United_Kingdom. FYI ad altre persone "GY" per Guernsey, "JE" per Jersey, e "IM" per Isola di Man sono incluse nella regex. Questo potrebbe andar bene, ma se sei solo in terraferma in Inghilterra dovrai rimuovere queste dipendenze da Crown. – Neil