Question

J'ai un client qui expédie via UPS et ne peut donc pas livrer à des boîtes postales. J'aimerais pouvoir valider les champs d'adresse du client afin de les empêcher de saisir des adresses incluant une boîte postale. Ce serait mieux si cela était implémenté en tant que regex afin que je puisse utiliser un contrôle de validation regex côté client (ASP.NET).

Je me rends compte qu'il n'y a probablement aucun moyen d'obtenir un taux de détection de 100%, je cherche juste quelque chose qui fonctionnera la plupart du temps.

Était-ce utile?

La solution

Cela devrait vous aider à démarrer. Testez pour voir si le champ Adresse correspond à cette expression régulière.

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

Traduction en anglais: il s’agit d’un P au début de la ligne, suivi d’une période et d’un espace facultatifs, suivis d’un 0, suivis d’une période facultative, suivis d’un espace, suivis de "Box", suivis de rien d'autre.

Autres conseils

UPS dispose également d’outils que vous pouvez intégrer pour le faire. Ainsi, vous pourrez vérifier une adresse et savoir si elle sera expédiée, quel en sera le coût, les horaires, etc. Je suggère de visiter UPS IT. Page Solutions pour plus d'informations.

Vous feriez peut-être mieux de mettre une clause de non-responsabilité sur la page pour vous avertir que vous ne pouvez pas envoyer de courrier aux boîtes postales, par opposition à la validation de l'entrée.

Plus que probablement si vous créez une regex qui capture la plupart des P.O. Dans les scénarios Box, il y a de bonnes chances que des objets non souhaités soient également capturés (par exemple, un client dont le nom de rue contient les lettres "p" "et" box ")

Je commencerais par un regex ala Lizard (mais utilisez l'indicateur "ignorer la casse :)), testez les données historiques, puis effectuez une itération lorsque vous voyez les inclusions et exclusions non valides que vous voyez dans les tests.

La plupart des fournisseurs d’expédition (par exemple, FedEx) valideront l’adresse d’expédition. Par exemple, avec les services Web FedEx, un appel est lancé pour valider une adresse de livraison et obtenir le coût estimé. Cela garantit non seulement que l'adresse n'est pas une boîte postale, mais également que le reste de l'adresse est valide.

En ce qui concerne le commentaire du PO sur la réponse de Jason Coco:

Etant donné que vous êtes en mesure d’ajouter une validation regex à l’adresse d’expédition, je suppose que vous avez le contrôle de l’application (c’est-à-dire que vous avez le source et que vous pouvez le modifier). Si tel est le cas, vous devriez pouvoir vérifier, lors de la réception des données soumises, si elles doivent être envoyées via USPS, FedEx ou UPS et soumettre une demande au validateur d’adresse spécifique à l’expéditeur approprié, en obtenant tous les éléments. avantages suggérés dans la réponse de Jason.

En le rendant spécifique à l'expéditeur, cela vous permettrait également d'éviter d'implémenter des règles uniformes, telles que "pas de boîtes postales car UPS ne leur livre pas", même si l'utilisateur peut sélectionner Les expéditeurs autres que UPS qui livrent dans des boîtes postales.

Et si cela ne commence pas par "PO Box .." ou "P.O. Boîte " ?

Exemple:

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

J'ai utilisé un événement onblur pour le champ d'adresse afin d'utiliser une fonction javascript, indexOf, pour reconnaître l'entrée.toUpperCase " PO BOX " || "P.O" C’est > = 0.

Si l'une de ces deux recherches n'est pas trouvée, le retour est -1, sinon, la position de départ de la chaîne sera retournée, elle sera toujours 0 ou plus.

Cela garantira que la frappe paresseuse, "boîte de poing", "boîte de p.o", ainsi que "p.o. case 'sera reconnu. Je suppose que vous pourriez ajouter 'po. "boîte" aussi bien.

Quoi qu’il en soit, la condition déclenche un message non intrusif indiquant que «Nous ne pouvons pas expédier à une adresse de boîte postale». C'est une fonctionnalité pour ne pas le voir s'il ne vous concerne pas. Sinon, pour les utilisateurs pour lesquels js ou css n'est pas activé, ils ne verront que le message. Le seul échec de cette dégradation gracieuse est si un utilisateur a css, mais pas js activé (où ils ne verront tout simplement pas le message). Je n’ai trouvé que la solution aujourd’hui, mais si je pense à un meilleur moyen, je reviendrai pour la poster ici.

Malheureusement, le logiciel en ligne d'UPS permet à P.O. Les boîtes à passer, mais vont s'étouffer une fois qu'elles sont dans le canal d'expédition. Dans notre cas, le taux d'abandon de nos paniers a augmenté lorsque nous avons essayé d'empêcher gracieusement P.O. Des boites. Nous avons trouvé beaucoup plus rentable de laisser faire, d'accepter la vente, de la porter à l'attention du service clientèle et de la laisser résoudre le problème. Bien sûr, si vous obtenez une incidence élevée de boîtes de P.O, cela peut ne pas être le cas pour vous.

De la question initiale:

  

Je me rends compte qu'il n'y a probablement aucun moyen d'obtenir un taux de détection de 100%, ...

En fait, il y a.

Si l'adresse est d'abord validée et normalisée au format USPS à l'aide d'un outil de validation d'adresse (l'entreprise pour laquelle je travaille est YAddress ), puis tous les bons de commande Les adresses de boîte, sans exception, seront orthographiées "PO BOX ...". Après cela, vous pouvez les comparer pour une correspondance exacte avec une précision de 100%.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top