Je dois valider un code postal canadien (par exemple, M4B 1C7
) en utilisant des expressions régulières C# (.NET).Validation du code postal canadien
Répondre
codes postaux canadiens ne peuvent pas contenir les lettres D, F, I, O, Q ou U, et ne peut pas démarrer avec W ou Z:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Si vous voulez un espace en option au milieu:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Je suggère ce qui suit:
bool FoundMatch = false;
try {
FoundMatch = Regex.IsMatch(SubjectString, "\\A[ABCEGHJKLMNPRSTVXY]\\d[A-Z] ?\\d[A-Z]\\d\\z");
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
J'ai modifié ma réponse à exclure des lettres non valides dans le premier caractère, comme par http://www.infinitegravity.ca/postalcodeformat.htm. – Templar
Si vous ne voulez pas avoir à faire deux barres obliques pour chaque barre oblique, utilisez un littéral @ chaîne comme dans '@" \ A [ABCEGHJKLMNPRSTVXY] \ d [A-Z]? \ D [A-Z] \ d \ z "'. – cdmckay
Quelque chose comme ceci:
^[A-Z]\d[A-Z] \d[A-Z]\d$
Toutes les lettres ne sont pas valides dans les codes postaux. – Tilendor
Valider le format d'un code postal sans en valider la signification ne vaut pas la peine, car les fautes de frappe peuvent toujours donner lieu à un code postal valide pour la mauvaise adresse. Vous voulez valider le code par rapport à la base de données d'adresses. Voir http://www.canadapost.ca/cpo/mc/business/productsservices/atoz/postalcodeproducts.jsf
le lien du Canada est mort – billynoah
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]
Essayez ceci:
function postalCodeCheck (postalCode, type) {
if (!postalCode) {
return null;
}
postalCode = postalCode.toString().trim();
var us = new RegExp("^\\d{5}(-{0,1}\\d{4})?$");
// var ca = new RegExp(/^((?!.*[DFIOQU])[A-VXY][0-9][A-Z])|(?!.*[DFIOQU])[A-VXY][0-9][A-Z]\ ?[0-9][A-Z][0-9]$/i);
var ca = new RegExp(/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]()?\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i);
if(type == "us"){
if (us.test(postalCode.toString())) {
console.log(postalCode);
return postalCode;
}
}
if(type == "ca")
{
if (ca.test(postalCode.toString())) {
console.log(postalCode);
return postalCode;
}
}
return null;
}
class Program
{
static void Main(string[] args)
{
string c1;
string c2;
string c3;
string c4;
string c5;
string c6;
string c7;
int sortie;
bool parfais = true;
Console.WriteLine("entrer votre code postal");
string cp = Console.ReadLine();
if (cp.Length == 7)
{
c1 = cp.Substring(0, 1);
c2 = cp.Substring(1, 1);
c3 = cp.Substring(2, 1);
c4 = cp.Substring(3, 1);
c5 = cp.Substring(4, 1);
c6 = cp.Substring(5, 1);
c7 = cp.Substring(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();
L'OP veut utiliser des expressions régulières. Il n'y en a pas dans cette réponse. –
- 1. Ecriture d'une fonction de validation de code postal JavaScript
- 2. Espace dans le code postal
- 3. Code postal distance en excel
- 4. Recherche de code postal international
- 5. validation sur des champs de courrier électronique/code postal dans sql/oracle
- 6. php envoyer le code postal ne fonctionne pas
- 7. Code postal qui joue un morceau de Noël
- 8. sélectionner des résultats par code postal/longitude/latitude
- 9. Code postal US dans le centre entre 2 codes postaux?
- 10. Javascript Expression régulière pour correspondre à 5 ou 9 chiffres code postal
- 11. Conseil sur un fournisseur canadien de passerelle SMS
- 12. Validation du schéma xsd
- 13. Besoin d'aide avec Regex pour extraire le code postal de la chaîne
- 14. Requête SQL pour compter et répertorier les différents comtés par code postal
- 15. validation du formulaire jquery avec deux messages de validation
- 16. Validation du formulaire avec ModelState
- 17. Où est un ensemble de données commercialement utilisable de température par code postal par mois?
- 18. Code postal à Ville/État et vice-versa dans une base de données?
- 19. Comment créer un pays -> État/Province ---> Code postal déroulant en utilisant geonames webservice + asp.net
- 20. Obtenir le code postal + 4 à partir de la latitude/longitude
- 21. Conception Validation d'adresse pour l'application
- 22. Validation complète du schéma XML
- 23. Validation des données du constructeur
- 24. Drupal: validation du type de contenu personnalisé
- 25. Validation Xml à l'aide du schéma XSD
- 26. Validation mono du fichier cfg.xml de NHibernate
- 27. Exécuter le code après validation de la transaction dans Django
- 28. L'utilisation dépend du plugin jQuery Validation
- 29. Validation du groupe de boutons radio à l'aide du plugin de validation jQuery
- 30. Validation correcte du type nullable en C#?
+1 pour «Les codes postaux canadiens ne peuvent pas avoir certaines lettres». Vous pourriez également ajouter que la lettre principale est plus restreinte, puis la deuxième et la troisième. –
merci une tonne de réponse ... cela fonctionne bien pour les codes comme M4B1E8 ... mais il ne fonctionnera pas pour M4B 1E8. Postes Canada pourrait avoir de l'espace après 3 caractères ... référence ici: http: //www.mongabay.com/igapo/toronto_zip_codes.htm – Jimmy
Idéalement, vous devriez ignorer les espaces en entrée et normaliser les données dans un format canonique pour le stockage. De cette façon, les gens peuvent entrer des codes postaux avec ou sans espaces, et cela n'aura aucune importance. Vous pouvez les formater à des fins de production si nécessaire. – Rob