Канадская проверка почтового индекса

Мне нужно проверить канадский почтовый код (например, M4B 1C7 ) с использованием регулярных выражений C # (.NET).

Канадские почтовые индексы не могут содержать буквы D, F, I, O, Q или U и не могут начинаться с W или Z:

 [ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9] 

Если вы хотите дополнительное пространство посередине:

 [ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9] 

Я предлагаю следующее:

 bool FoundMatch = false; try { FoundMatch = Regex.IsMatch(SubjectString, "\\A[ABCEGHJKLMNPRSTVXY]\\d[AZ] ?\\d[AZ]\\d\\z"); } catch (ArgumentException ex) { // Syntax error in the regular expression } 

Вот правила: 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] 

Что-то вроде этого:

 ^[AZ]\d[AZ] \d[AZ]\d$ 

Попробуй это:

 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][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.toString())) { console.log(postalCode); return postalCode; } } if(type == "ca") { if (ca.test(postalCode.toString())) { console.log(postalCode); return postalCode; } } return null; } 

Проверка формата почтового кода без проверки его значения не стоит того, поскольку опечатки могут по-прежнему приводить к действительному почтовому индексу для неправильного адреса. Вы хотите проверить код на адресную базу данных. См. http://www.canadapost.ca/cpo/mc/business/productsservices/atoz/postalcodeproducts.jsf

 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(); 
  • Разница между match () и find () в Java Regex
  • jQuery Подтвердить плагин - проверка пароля - минимальные требования - Regex
  • Инструмент Grep для XML
  • Что означает std :: match_results :: размер возврата?
  • Regex только для чисел
  • Можно ли заменить группы в Java regex?
  • Регулярные выражения Java и знак доллара
  • Как использовать регулярные выражения в сценариях bash?
  • R grep: есть ли оператор AND?
  • Java String.split () Regex
  • Java regex для поддержки Unicode?
  • Давайте будем гением компьютера.