質問

UPSで出荷しているクライアントがいるため、私書箱に配送できません。顧客が私書箱を含む住所を入力できないようにするために、顧客の住所フィールドを検証できるようにしたいと思います。クライアント側の正規表現検証コントロール(ASP.NET)を使用できるように、これを正規表現として実装するのが最適です。

100%の検出率を得る方法はおそらくないことを認識しています。ほとんどの場合に機能するものを探しています。

役に立ちましたか?

解決

これで開始できます。 [アドレス]フィールドがこの正規表現と一致するかどうかをテストします。

"^P\.?\s?O\.?\sB[Oo][Xx]."

英語への翻訳:行の先頭のP、オプションのピリオドとスペース、O、その後にオプションのピリオド、スペース、"ボックス&quot ;、他のもの。

他のヒント

UPSには、これを実行するために統合できるツールもあります。この方法により、出荷するかどうか、コストがどうなるか、スケジュールなどについて正確に住所を確認できます。UPSIT詳細については、ソリューションページ。

入力を検証するのではなく、私書箱に発送できないという警告をページに表示するほうがよい場合があります。

ほとんどのP.Oをキャッチする正規表現を作成した場合ボックスシナリオでは、意図しないものもキャッチする可能性が高くなります(つまり、文字「p」「o」および「box」を含むストリート名を持つ顧客)

正規表現ala Lizardから始めて(ただし、「無視ケース」フラグを使用します:))、履歴データをテストし、テストで表示される無効な包含および除外を確認しながら繰り返します。

ほとんどの配送業者(FedExなど)は配送先住所を検証します。たとえば、FedEx Webサービスでは、配送先住所を検証し、推定コストを取得するための呼び出しがあります。これにより、住所が私書箱でないことが保証されるだけでなく、住所の残りの部分が有効であることも確認されます。

ジェイソンココの回答に対するOPのコメントについて:

正規表現の検証を配送先住所に追加できる立場にあるので、アプリケーションを制御できると仮定します(つまり、ソースがあり、変更できる場合)。その場合は、提出されたデータを受け取ったら、USPS、FedEx、UPSのいずれで出荷するかを確認し、適切な配送業者固有の住所検証サービスにリクエストを送信して、すべてのJasonの回答で提案されている利点。

配送業者固有にすることで、ユーザーが選択できる場合でも、「私書箱はありませんのでUPSは配送しないので」など、万能サイズのルールの実装を避けることができます私書箱に配達するUPS以外の配送業者。

「PO Box ..」で始まらない場合または" P.O。ボックス"

例:

ジョン・シュミット| シルバーバレーPO Box 3901 | ウィスワルドビル、SI。 78946

アドレスフィールドにonblurイベントを使用して、javascript関数indexOfを使用してinput.toUpperCase" PO BOX"を認識しました。 || 「P.O」つまり、> = 0です。

これら2つの検索のいずれかが見つからない場合、戻り値は-1です。それ以外の場合、常に0以上の文字列の開始位置を返します。

これにより、遅延入力、 'po box'、 'p.o box'、および 'p.o.ボックス」が認識されます。 「po」を追加できると思います。ボックス」も同様です。

とにかく、この条件は控えめなメッセージをトリガーして、「私書箱の住所に発送できない」ことを示します。それはあなたに当てはまらない場合それを見ない機能です。それ以外の場合、jsまたはcssを有効にしていないユーザーに対しては、メッセージが表示されるだけです。このグレースフルデグラデーションの唯一の失敗は、ユーザーがcssを持っているが、jsが有効になっていない場合(メッセージがまったく表示されない場合)です。今日は解決策を思いついただけですが、より良い方法をお考えの場合は、ここに投稿して戻ってきます。

残念ながら、UPSのオンラインソフトウェアではP.O.通過するボックスですが、配送チャネルに入るとそれらを詰まらせます。 私たちの場合、P.O。を適切に防止しようとしたときに、カートの放棄率が上がりました。ボックス。そのままにして、販売を受け入れ、顧客サービスの注意を喚起し、解決するようにすると、はるかに費用対効果が高いことがわかりました。 もちろん、P.Oボックスの発生率が高い場合、これは当てはまらない可能性があります。

元の質問から:

  

おそらく、100%の検出率を得る方法はないことを認識しています...

実際にあります。

住所検証ツールを使用して住所が最初に検証され、USPS形式に標準化された場合(私が勤務する会社は YAddressを作成します)、次にすべてのPO例外のないボックスアドレスは、「PO BOX ...」と綴られます。その後、100%の精度で完全一致するように文字列を比較できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top