簡體   English   中英

加拿大郵政編碼驗證

[英]Canadian postal code validation

我需要使用C#(.NET)正則表達式驗證加拿大郵政編碼(例如, M4B 1C7 )。

加拿大郵政編碼不能包含字母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://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]

像這樣的東西:

^[A-Z]\d[A-Z] \d[A-Z]\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][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;
}

驗證郵政編碼的格式而不驗證其含義是不值得的,因為拼寫錯誤仍然可能導致錯誤地址的有效郵政編碼。 您希望根據地址數據庫驗證代碼。 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM