私は、UPS 経由で配送しているクライアントを抱えているため、私書箱に配送できません。顧客が私書箱を含む住所を入力できないようにするために、顧客の住所フィールドを検証できるようにしたいと考えています。クライアント側の正規表現検証コントロール (ASP.NET) を使用できるように、これを正規表現として実装するのが最善です。
おそらく 100% の検出率を得る方法はないと思います。ほとんどの場合に機能するものを探しているだけです。
私は、UPS 経由で配送しているクライアントを抱えているため、私書箱に配送できません。顧客が私書箱を含む住所を入力できないようにするために、顧客の住所フィールドを検証できるようにしたいと考えています。クライアント側の正規表現検証コントロール (ASP.NET) を使用できるように、これを正規表現として実装するのが最善です。
おそらく 100% の検出率を得る方法はないと思います。ほとんどの場合に機能するものを探しているだけです。
UPS には、これを行うために統合できるツールもあります。これにより、発送の可否、費用、スケジュールなどについて正確に住所を確認できます。UPS IT ソリューションのページにアクセスすることをお勧めします。詳しくは。
これで始められるはずです。Address フィールドがこの正規表現と一致するかどうかをテストします。
"^P\.?\s?O\.?\sB[Oo][Xx]."
英語への翻訳: 行頭の P、その後にオプションのピリオドとスペース、その後に O、オプションのピリオド、スペース、"Box"、その他の文字が続きます。
入力を検証するのではなく、私書箱に発送できないことを警告するページに免責事項を記載する方がよい場合があります。
私書箱のほとんどのシナリオをキャッチする正規表現を作成した場合、意図していないものもキャッチする可能性が高くなります (つまり、通りの名前に文字「p」「o」が含まれる顧客)。および「ボックス」)
残念ながら、UPS のオンライン ソフトウェアでは、私書箱を通過させることができますが、配送経路に入ると詰まります。私たちの場合、私書箱を適切に防止しようとしたときに、カート放棄率が上昇しました。そのままにして販売を受け入れ、顧客サービスに注意を向けて解決してもらう方が、はるかに費用対効果が高いことがわかりました. もちろん、私書箱の発生率が高い場合は、そうではない可能性があります。
正規表現alaLizardから始めて(ただし、「大文字と小文字を区別しない」フラグを使用します:))、履歴データをテストしてから、テストで表示される無効な包含と除外を確認しながら繰り返します。
ジェイソンココの答えに対するOPのコメントについて:
あなたは配送先住所に正規表現の検証を追加する立場にあるので、私はあなたがアプリケーションを制御していると仮定します(つまり、あなたはソースを持っていて、それを変更することができます)。その場合は、提出されたデータを受け取り次第、USPS、FedEx、またはUPSのいずれで発送されるかを確認し、適切な配送業者固有の住所検証ツールにリクエストを送信して、すべてのデータを取得できるようにする必要があります。ジェイソンの答えで示唆された利点。
荷送人固有にすることで、ユーザーがUPS以外の荷送人を選択できる場合でも、「UPSが配達しないため私書箱がない」などの万能ルールの実装を回避することもできます。私書箱に配達する人。
「PO Box..」または「PO Box」で始まらない場合はどうなりますか?
例:
ジョン・シュミット | シルバー バレー私書箱 3901 | Whereswaldoville、SI。78946
住所フィールドの onblur イベントを使用して、javascript 関数 indexOf を使用して input.toUpperCase "PO BOX" || を認識しました。>= 0 の「PO」。
これら 2 つの検索のいずれかが見つからない場合、返される値は -1 です。それ以外の場合は、常に 0 以上の文字列の開始位置が返されます。
これにより、遅延入力、「po box」、「po box」、および「po box」が確実に認識されます。「po」を追加できると思います。ボックス」も。
いずれにせよ、この条件は「私書箱の住所には発送できません」という目立たないメッセージをトリガーします。該当しない場合は表示されない機能です。それ以外の場合は、js を持っていないユーザー向けです。またはcssを有効にすると、メッセージが表示されるだけです.このグレースフルデグラデーションで唯一失敗するのは、ユーザーがcssを持っていて、jsが有効になっていない場合です(メッセージがまったく表示されない場合).今日の解決策ですが、より良い方法を考えたら、ここに投稿するために戻ってきます.
ほとんどの配送業者 (FedEx など) は、配送先住所を検証します。たとえば、FedEx Web サービスでは、配送先住所を検証して推定費用を取得するための呼び出しがあります。これにより、住所が私書箱ではないことが保証されるだけでなく、残りの住所が有効であることも確認されます。