2010-08-12 5 views
3

Je souhaite valider un champ avec un code postal UK. Quelle expression régulière pourrait être utilisée pour valider ce champ? (([A-Z]{1,2}[0-9][0-9A-Z]{0,1})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$ semble valide parce qu'il a l'exception GIR 0AA.Validation des codes postaux du Royaume-Uni en utilisant des expressions régulières

Alors, s'il vous plaît aidez-moi à écrire une expression sans aucune exception

+0

Voulez-vous dire ** Code postal **? – Rob

+0

Cela a soudain plus de sens si c'est le cas. Les NIP avec des lettres semblent un peu improbables (du moins s'ils n'ont pas d'autres informations). – Quentin

+0

Cela n'a pas de sens d'essayer de valider les codes postaux sans exception cependant ... puisque le système de code postal a une exception aux règles normales. – Quentin

Répondre

0
^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$ 
3

Si vous entendez le code postal, wikipedia has a section on validation. Un regex qu'il recommande est:

((A[BL]|B[ABDHLNRST]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|([E|N|NW|SE|SW|W]1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|[SW|W]([1-9][0-9]|[2-9])|EC[1-9][0-9]) [0-9][ABD-HJLNP-UW-Z]{2} 

L'avantage de celui-ci est qu'il attrape certaines zones et districts invalides.

1

Side note:GIR 0AA est répertorié comme une exception dans votre expression régulière, car il est un Royaume-Uni post code valable pour ce qui sont esentially raisons historiques (recherche dans l'article de Wikipedia, il est donné Mention spéciale).

Il n'y a pas d'expression régulière trivial vous pouvez écrire pour valider un code postal Royaume-Uni comme il n'y a pas de caution que, par exemple, GU78 2AB est valide (la zone GU78 extérieure ne peut contenir que 2A A, mais pas 2A B), alors que GU77 2AB peut être considéré comme valide.

Vous pouvez utiliser une expression régulière pour valider le formulaire et structurer d'un texte pour déterminer s'il correspond aux exigences pour être considéré comme un code postal. Je crois que, d'une manière générale, l'expression régulière suivante suffira à satisfaire:

(([A-Z]{1,2}[0-9]{1,2})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$ 
+0

Merci pour la réponse qui m'a vraiment beaucoup aidé, je pensais que c'était une exception maintenant je comprends que cela signifie –

Questions connexes