4

米国の郵便番号またはカナダの郵便番号を検証する方法があることを知りたいですか?正規表現を使用しようとしました。米国のように

- (BOOL)validateZip:(NSString *)candidate {
    NSString *emailRegex = @"(^{5}(-{4})?$)|(^[ABCEGHJKLMNPRSTVXY][A-Z][- ]*[A-Z]$)";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 

    return [emailTest evaluateWithObject:candidate];   
}

しかし、それは機能していません。この検証に関するアイデアをお持ちの方はいらっしゃいますか?検証用の残りのAPIがあれば教えてください。

4

2 に答える 2

12

米国の場合、量指定子 ( {5}{4}?) は正しいのですが、何を量化しているかを正確に指定するのを忘れていました。あなたがしたい:

(^[0-9]{5}(-[0-9]{4})?$)

ウィキペディアによると、カナダの場合、形式はA0A 0A0であるため、次のようにします。

(^[a-zA-Z][0-9][a-zA-Z][- ]*[0-9][a-zA-Z][0-9]$)

ここで、大文字と小文字を区別しないで、次のように完全な式を記述します。

@"^(\\d{5}(-\\d{4})?|[a-z]\\d[a-z][- ]*\\d[a-z]\\d)$"

率直に言って、私は実際には Objective C や iOS に精通していません。悲しいことに、上記のテストは行っていません。ただし、以前にそのような投稿で が言及されているのを見たことNSRegularExpressionがありますが、これはコードにありませんが、おそらく必要ではありません。他の人の例を見て、他にどのような単純な間違いを犯しているのかを確認してください。幸運を。

于 2012-10-15T14:39:07.427 に答える