Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Канадские почтовые индексы не могут содержать буквы 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]

Ответ 2

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

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
}

Ответ 3

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

Ответ 4

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

^[A-Z]\d[A-Z] \d[A-Z]\d$

Ответ 5

Попробуйте следующее:

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;
}

Ответ 6

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

Ответ 7

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();