web-dev-qa-db-ja.com

郵便番号(米国郵便番号)の検証

私は人々が一緒に小さなコードプロジェクトに取り組んでいると思っていましたが、私は彼らを見ていないので、ここに簡単なものがあります:

有効な米国の郵便番号を検証するコード。郵便番号データベースがあることは知っていますが、Webページ、クイック検証、および郵便番号が発行され続けるなどの用途がまだあるため、弱い検証を使用することをお勧めします。

Wiki /ブログのサイドプロジェクトで郵便番号について少し書きました。

https://benc.fogbugz.com/default.asp?W24

新しい、奇妙なタイプの郵便番号もあります。

https://benc.fogbugz.com/default.asp?W42

JavaScriptコードを実行できますが、ここで取得できる言語の数を確認するのは興味深いでしょう。

39
benc

Javascript Regex Literal

米国の郵便番号:/(^\d{5}$)|(^\d{5}-\d{4}$)/

var isValidZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/.test("90210");

一部の国では 郵便番号 を使用していますが、このパターンは失敗します。

54
keparo
function isValidUSZip(sZip) {
   return /^\d{5}(-\d{4})?$/.test(sZip);
}
26
Andrey Fedorov

国コードに基づいて郵便番号を検証するJavaScript関数を次に示します。多少リベラルなフォーマットが可能です。他の国のケースも追加できます。デフォルトのケースでは、すべての国で使用されているわけではないため、空の郵便番号を使用できます。

function isValidPostalCode(postalCode, countryCode) {
    switch (countryCode) {
        case "US":
            postalCodeRegex = /^([0-9]{5})(?:[-\s]*([0-9]{4}))?$/;
            break;
        case "CA":
            postalCodeRegex = /^([A-Z][0-9][A-Z])\s*([0-9][A-Z][0-9])$/;
            break;
        default:
            postalCodeRegex = /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/;
    }
    return postalCodeRegex.test(postalCode);
}

参考までに、虚栄心の郵便番号に関する2番目のリンクはエイプリルフールのジョークだったようです。

6
Mike Henry

カナダに行っている場合は、すべての文字が有効ではないことに注意してください

これらの文字は無効です:D、F、I、O、Q、またはU文字WおよびZは最初の文字として使用されません。また、3番目の文字の後にオプションのスペースを使用する人もいます。

カナダの郵便番号の正規表現は次のとおりです。

new RegExp(/^[abceghjklmnprstvxy][0-9][abceghjklmnprstvwxyz]\s?[0-9][abceghjklmnprstvwxyz][0-9]$/i)

最後のiは、大文字と小文字を区別しません。

5
Samer

JQuery Validateプラグインの_additional-methods.js_ファイルの1つを次に示します...

_jQuery.validator.addMethod("zipUS", function(value, element) {
    return /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(value);
}, "Please specify a valid US Zip code.");
_

[〜#〜] edit [〜#〜]:上記のコードはjQuery Validateプラグインの一部であるため、.addMethod() 方法。

プラグインへの依存関係を削除し、より汎用的にします。

_function checkZip(value) {
    return (/(^\d{5}$)|(^\d{5}-\d{4}$)/).test(value);
};
_

使用例: http://jsfiddle.net/5PNcJ/

3
Shogo Yahagi

これは、検証の問題に対する優れたJavaScriptソリューションです。

/\b\d{5}-\d{4}\b/
1
TorchLakeDave

私は郵便業界で17年間働いており、この分野であらゆる種類のデータ入力を見てきました。USPSで定義されている住所を知らない人がどれだけいるのか、興味深いと思います。私はまだこのようなアドレスを見ています:

XYZカレッジ
IT部門
市、St Zip

最悪の部分は、時間の99%が配信されるメールで、残りの1%は、不完全なアドレスに対して返されるはずです。

以前の投稿で、誰かがUSPS CASSについて言及しましたが、そのソフトウェアは無料ではありません。

郵便番号テスターを正規表現するには、式を使用して、US、CA、UK、またはAUの郵便番号を判別します。私は、Zipが属する正しい国を選択する際に課題を追加するだけの日本やその他の表現を見てきました。

最善の答えは、州および国にドロップダウンリストを使用することです。次に、必要に応じてテーブルを使用してさらに検証します。わかりやすくするために、最初の5桁だけに84052のUS City St Zipの組み合わせがあります。 ISOによると249の有効な国があり、65の米国の州/準州があります。

軍事、私書箱のみ、および一意の郵便番号クラスもあります。 KISSはここに適用されます。

1
user2832940

USPSアドレス情報APIをご覧になることをお勧めします。 Zipを検証し、標準形式のアドレスを取得できます。 https://www.usps.com/business/web-tools-apis/address-information.htm

1
Carl

有効なカナダの郵便番号を確認する1つの方法は、

function isValidCAPostal(pcVal) {
   return ^[A-Za-z][0-9][A-Za-z]\s{0,1}[0-9][A-Za-z][0-9]$/.test(pcVal);
}

これが誰かを助けることを願っています。

0
Irfan

私の答えをさらに進めるために、UPSとFedExは、USPSを最終ハンドラーとして使用しないと、私書箱に配達できません。そこに出荷されているほとんどのソフトウェアは、標準サービスに私書箱の郵便番号を許可しません。私書箱のジッパーの例は、00604-RAMEY、PRおよび06141-HARTFORD、CTです。

郵便番号を検証するための全体的なニーズは、実際のところ、どこまで行くのか、予算はいくらなのか、タイムラインはいくらなのかという問題になります。

式を使用したテストと同様に、テスト、テスト、再テストを行います。州の検証用の式があり、YORKが失敗する必要があるときに合格したことがわかりました。数千人に一度はニューヨーク、10279年にニューヨークに入った。

また、USPSはN. Market St.などの句読点を好まず、レーン、プレイス、ノース、コーポレーションなどの特定の受け入れ可能な省略形も持っていることに留意してください。

0
user2832940

Drupal 7には簡単なソリューションもあります。これにより、複数の国に対して検証することができます。

https://drupal.org/project/postal_code_validation

このモジュールも必要になります
https://drupal.org/project/postal_code

http://simplytest.me/ でテストします

0
pal4life