Одна прагматическая подсказка: можно искать легко static_cast ключевое слово в исходном коде, если Вы планируете убрать проект.
Почтовые индексы Канады не могут содержать буквы 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[A-Z] ?\\d[A-Z]\\d\\z");
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
Проверка формата почтового индекса без проверки его значения не стоит того, поскольку опечатки все равно могут привести к получению действительного почтового индекса для неправильного адреса. Вы хотите проверить код по базе данных адресов. См. http://www.canadapost.ca/cpo/mc/business/productsservices/atoz/postalcodeproducts.jsf