Je dois valider un code postal canadien (par exemple, M4B 1C7
) en utilisant des expressions régulières C # (.NET).
Les codes postaux canadiens ne peuvent pas contenir les lettres D, F, I, O, Q ou U et ne peuvent pas commencer par W ou Z:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Si vous voulez un espace optionnel au milieu:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Je suggère ce qui suit:
bool FoundMatch = false; try { FoundMatch = Regex.IsMatch(SubjectSsortingng, "\\A[ABCEGHJKLMNPRSTVXY]\\d[AZ] ?\\d[AZ]\\d\\z"); } catch (ArgumentException ex) { // Syntax error in the regular expression }
Voici les règles http://en.wikipedia.org/wiki/Postal_code#Reserved_characters
ABCEGHJKLMNPRSTVXY <-- letter used DFIOQU <-- letters not used because it mixes up the reader WZ <-- letters used but not in the first letter With that in mind the following in the proper regex @[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][\s][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Quelque chose comme ça:
^[AZ]\d[AZ] \d[AZ]\d$
Essaye ça:
function postalCodeCheck (postalCode, type) { if (!postalCode) { return null; } postalCode = postalCode.toSsortingng().sortingm(); var us = new RegExp("^\\d{5}(-{0,1}\\d{4})?$"); // var ca = new RegExp(/^((?!.*[DFIOQU])[A-VXY][0-9][AZ])|(?!.*[DFIOQU])[A-VXY][0-9][AZ]\ ?[0-9][AZ][0-9]$/i); var ca = new RegExp(/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]( )?\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i); if(type == "us"){ if (us.test(postalCode.toSsortingng())) { console.log(postalCode); return postalCode; } } if(type == "ca") { if (ca.test(postalCode.toSsortingng())) { console.log(postalCode); return postalCode; } } return null; }
Valider le format d’un code postal sans valider sa signification n’en vaut pas la peine, car les fautes de frappe peuvent toujours entraîner un code postal valide pour la mauvaise adresse. Vous souhaitez valider le code par rapport à la firebase database d’adresses. Voir http://www.postescanada.ca/cpo/mc/business/productsservices/atoz/postalcodeproducts.jsf
class Program { static void Main(ssortingng[] args) { ssortingng c1; ssortingng c2; ssortingng c3; ssortingng c4; ssortingng c5; ssortingng c6; ssortingng c7; int sortie; bool parfais = true; Console.WriteLine("entrer votre code postal"); ssortingng cp = Console.ReadLine(); if (cp.Length == 7) { c1 = cp.Subssortingng(0, 1); c2 = cp.Subssortingng(1, 1); c3 = cp.Subssortingng(2, 1); c4 = cp.Subssortingng(3, 1); c5 = cp.Subssortingng(4, 1); c6 = cp.Subssortingng(5, 1); c7 = cp.Subssortingng(6, 1); if (int.TryParse(c1, out sortie)) { parfais = false; Console.WriteLine("le 1er caratere doit etre une lettre"); } if (int.TryParse(c2, out sortie) == false) { parfais = false; Console.WriteLine("le 2e caratere doit etre un nombre"); } if (int.TryParse(c3, out sortie)) { parfais = false; Console.WriteLine("le 3e caratere doit etre une lettre"); } if (c4.Contains(" ") == false) { parfais = false; Console.WriteLine("vous devez utiliser un espace"); } if (int.TryParse(c5, out sortie) == false) { parfais = false; Console.WriteLine("le 5e caratere doit etre un nombre"); } if (int.TryParse(c6, out sortie)) { parfais = false; Console.WriteLine("le 6e caratere doit etre une lettre"); } if (int.TryParse(c7, out sortie) == false) { parfais = false; Console.WriteLine("le 7e caratere doit etre un nombre"); } else if(parfais == true) { Console.WriteLine("code postal accepter"); Console.ReadLine(); } } else { Console.WriteLine("le code postal doit contenir 7 caratere incluant l'espace"); } Console.ReadLine();