2009-07-17 10 views

答えて

68

カナダの郵便番号は、文字D、F、I、O、Q、またはUを含めることはできませんし、あなたが途中で、オプションのスペースが必要な場合

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

:WまたはZで始めることはできません

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

+1 "カナダの郵便番号には特定の文字を使用できません"。先頭の文字がより制限されていて、次に2番目と3番目の文字が制限されていると付け加えることもできます。 –

+0

答えのためのトンをありがとう...これはM4B1E8のようなコードのためにうまくいきます...しかしそれはM4B 1E8のために働かないでしょう。カナダの郵便番号は3文字後のスペースを持つことができます。参考:http://www.mongabay.com/igapo/toronto_zip_codes.htm – Jimmy

+6

入力時に空白を無視し、標準形式に正規化するのが理想的です。そうすれば、人々はスペースの有無にかかわらず郵便番号を入力することができ、それは重要ではありません。必要に応じて出力目的でフォーマットすることができます。 – Rob

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

+3

fスラッシュごとに2つのスラッシュを使用したくない場合は、@ A [ABCEGHJKLMNPRSTVXY] \ d [A-Z]?\ d [A-Z] \ d \ z "'のように@文字列リテラルを使用してください。 – cdmckay

0

何か:

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

すべての文字が郵便番号に有効であるとは限りません。 – Tilendor

0

意味の妥当性を確認せずに郵便番号の書式を検証することは、間違った住所の有効な郵便番号が誤って入力される可能性があるため、その価値はありません。コードをアドレスデータベースに対して検証する必要があります。ここを参照してくださいhttp://www.canadapost.ca/cpo/mc/business/productsservices/atoz/postalcodeproducts.jsf

+0

カナダのポストリンクが死んでいる – billynoah

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

OPが欲しい正規表現を使用する。この答えには何もありません。 –