2009-07-17 116 views

回答

68

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

+1「加拿大郵政編碼不能有某些字母」。你可能還想補充一點,領導信件更受限制,然後是第二和第三。 – 2009-07-18 04:03:07

+0

謝謝你的回答...這對M4B1E8等代碼工作正常...但它不適用於M4B 1E8。加拿大郵政在3個字符之後可能有空格。參考:http://www.mongabay.com/igapo/toronto_zip_codes.htm – Jimmy 2009-07-18 21:57:33

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 
} 
+0

我修改我的答案排除的第一個字符無效字母,按HTTP:/ /www.infinitegravity.ca/postalcodeformat.htm。 – Templar 2009-07-18 16:17:09

+3

如果你不想爲每個斜槓做兩個斜線,可以使用'@'\ A [ABCEGHJKLMNPRSTVXY] \ d [A-Z]?\ d [A-Z] \ d \ z「`這樣的@字符串。 – cdmckay 2009-07-19 01:27:16

0

事情是這樣的:

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

並非所有字母在郵政編碼中都有效。 – Tilendor 2010-03-08 18:10:02

1

下面是規則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] 
0

試試這個:

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