2

質問:文字列 (NSString) に世界中で有効な郵便番号が含まれているかどうかを確認して返す関数をどのように記述しますか。

追加情報: iOS の RegEx を認識しています。しかし、私はそれほど流暢ではありません。これは、どの国でも有効なものを真として受け入れる必要があることに注意してください。

米国 - 「10200」

米国 - 「33701-4313」

カナダ - 「K8N 5W6」

英国 - 「3252-322」

編集:投票した人、または質問を閉じる人は、理由を述べてください. ありがとうございました。

4

3 に答える 3

7

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

スペースの有無にかかわらずカナダの郵便番号形式に一致します(例:「T2X1V4」または「T2X1V4」)


^\d{5}(-\d{4})?$

すべての米国形式の郵便番号形式に一致します(例:「94105-0011」または「94105」)


(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]\d[A-Z][- ]*\d[A-Z]\d$)

上記の形式の米国またはカナダのコードに一致します。


英国のコードはあなたが思っているよりも複雑です:http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom

于 2012-06-27T16:07:45.067 に答える
3

これをしないことをお勧めします。郵便番号を強制しようとする多くの Web サイトを見てきましたが、それが正しく行われているのを見たことがありません。zipcodeという名前でさえ、米国固有のものです。

言い換えると:

- (BOOL)isValidZipCode: (NSString *)zip {
    return YES;
}

と書くつもりでし[zip length] > 0たが、もちろんそれも保証されません。

于 2012-06-27T16:22:27.080 に答える
2

郵便番号/郵便番号を使用する国ごとに、通常、独自の形式があります。世界中のコードに一致する正規表現を見つけるのは難しいでしょう。

郵便番号の検証に使用する正規表現(存在する場合)を決定する国ピッカーを追加することをお勧めします。

余談ですが、英国の例として指定した郵便番号は正しくありません。まともな英国の正規表現は次のとおりです。

^(^gir\\s0aa$)|(^[a-pr-uwyz]((\\d{1,2})|([a-hk-y]\\d{1,2})|(\\d[a-hjks-uw])|([a-hk-y]\\d[abehmnprv-y]))\\s\\d[abd-hjlnp-uw-z]{2}$)$
于 2012-06-27T16:16:23.177 に答える