Frage

Ich habe einen Klienten, die über UPS versendet, und daher nicht auf Post-Boxen liefern kann. Ich möchte in der Lage sein, Kundenadressfelder, um zu überprüfen, um zu verhindern, Eingabe von Adressen, die ein Postfach enthalten. Es wäre am besten, wenn dies als regex umgesetzt wurde, so dass ich eine clientseitige regex Validierung Kontrolle (ASP.NET) verwenden konnte.

Ich weiß, gibt es wahrscheinlich keine Möglichkeit, eine 100% ige Erkennungsrate zu erhalten, suche ich gerade nach etwas, das den meisten Zeit arbeiten.

War es hilfreich?

Lösung

Das sollten Sie beginnen. Testen Sie, ob das Adressfeld dieses regex entspricht.

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

Die Übersetzung auf Englisch: Das ist ein P am Anfang der Zeile, gefolgt von einem optionalen Zeitraum und Raum, durch einen O, gefolgt von einem optionalen Zeitraum, gefolgt von einem Leerzeichen, gefolgt von „Box“, gefolgt von irgendetwas sonst.

Andere Tipps

UPS hat auch Tools, die Sie integrieren können diese ..., so tun Sie eine Adresse überprüfen können, genau, ob oder nicht, wird sie versendet, was die Kosten sein würde, Zeitpläne, usw. Ich schlage vor, den Besuch der UPS IT Lösungen Seite für weitere Informationen.

Sie könnten besser dran, eine Verzichtserklärung auf der Seite Warnung setzt, dass Sie nicht Büro Box versenden zu schreiben, im Gegensatz zu dem Eingang zu validieren.

Mehr als wahrscheinlich, wenn Sie einen regulären Ausdruck erstellen zu tun, dass die meisten der P. O. fängt Box-Szenarien gibt es eine gute Chance, es auch Dinge fangen werden Sie waren nicht die Absicht (das heißt ein Kunde mit einem Straßennamen enthält die Buchstaben ‚p‘ ‚o‘ und ‚Feld‘)

würde ich mit einem regex ala Lizard beginnen (die „ignore case“ Flag :) verwenden), Test auf historischen Daten, dann durchlaufen, wie Sie sehen, was ungültige Ein- und Ausschlüsse Sie bei der Prüfung zu sehen.

Die meisten Versandanbieter (zB FedEx) wird die Lieferadresse bestätigen. Zum Beispiel mit FedEx Web Services, ist ein Anruf eine Lieferadresse zu bestätigen und die geschätzten Kosten zu erhalten. Dadurch wird nicht nur sichergestellt, dass die Adresse nicht ein Postfach, sondern stellt auch sicher, dass der Rest der Adresse gültig ist.

Im Hinblick auf die Bemerkung des OP zu Jason Coco Antwort:

Da Sie in der Lage sind regex Validierung der Lieferadresse hinzuzufügen, nehme ich an, dass Sie die Kontrolle über die Anwendung haben (das heißt, Sie die Quelle haben und es ändern können). Wenn das der Fall ist, dann sollten Sie in der Lage sein, auf reciept der vorgelegten Daten prüfen, ob es über USPS, Fedex oder UPS versendet werden soll, und eine Anfrage an den entsprechenden Absender spezifische Adresse Validator einreichen, gewinnen alle Vorteile in Jasons Antwort vorgeschlagen.

Durch sie machen Versender spezifisch, dies würde auch ermöglicht es Ihnen one-size-fits-all-Regeln, wie zu vermeiden Umsetzung „keine Postfächer, da UPS liefert sie nicht“, auch wenn der Benutzer nicht auswählen kann -UPS Versendern, die an Postfächer liefern kann.

Was passiert, wenn es nicht mit Start "PO Box .." oder "P. O. Box"?

Beispiel:

John Schmidt | Silver Valley PO Box 3901 | Whereswaldoville, SI. 78946

Ich habe ein onblur Ereignis für das Adressfeld eine JavaScript-Funktion zu verwenden, indexOf, den input.toUpperCase „PO BOX“ zu erkennen || "P.o.", das heißt> = 0 ist.

Wenn eine dieser beiden Suchen nicht gefunden werden, die Rückkehr ist -1, sonst wird es die Zeichenfolge der Startposition zurück, die immer 0 sein oder mehr.

Dies wird, dass faul Typisierung gewährleisten, ‚po box‘ ‚p.o. Box‘ und sowie ‚p.o. Box‘wird erkannt. Ich nehme an, Sie könnten ‚po hinzufügen. Box‘als auch.

Wie auch immer, löst die Bedingung eine unaufdringliche Meldung zu zeigen, dass ‚wir nicht zu einer PO Box-Adresse versenden.“ Es ist eine Funktion, um es nicht zu sehen, wenn es nicht auf Sie zutrifft. Ansonsten für Benutzer, den don‘ t haben js oder CSS-Option aktiviert ist, werden sie nur die Nachricht sehen. die einzige auf dieser graceful Degradation fehlschlagen, wenn ein Benutzer CSS hat, aber nicht js aktiviert (wo sie einfach nicht die Botschaft überhaupt sehen). ich bin nur gekommen up mit der Lösung heute, aber wenn ich einen besseren Weg denke, komme ich wieder hier posten.

Leider UPS Online-Software ermöglicht P.O. Boxen zu gehen, aber auf sie ersticken, wenn sie in der Fahrrinne sind. In unserem Fall ging unsere Abbruchrate, wenn wir P.O. zu anmutig verhindern versucht, Boxen. Wir fanden es viel kostengünstiger, es allein zu lassen, übernimmt den Verkauf, bringen Sie es, um die Aufmerksamkeit des Kunden-Service, und lassen Sie sie es lösen. Natürlich, wenn Sie eine hohe Inzidenz von p.o. Boxen bekommen, kann dies nicht der Fall für Sie sein.

Von der ursprünglichen Frage:

  

Ich weiß, gibt es wahrscheinlich keine Möglichkeit, eine 100% ige Erkennungsrate zu erhalten, ...

Eigentlich gibt es.

Wenn die Adresse zuerst validiert und standardisiert auf dem USPS-Format unter Verwendung eines Adressvalidierungstool (die Firma, die ich für Marken arbeiten YADDRESS ), dann werden alle PO Box-Adressen ohne Ausnahme werden „PO BOX ...“ geschrieben. Danach können Sie sie für eine exakte Übereinstimmung mit 100% Genauigkeit String-Vergleich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top