防止邮政信箱地址的最佳策略?

问题描述 投票:2回答:9

我有一个客户通过UPS运送,因此无法送到邮政信箱。我希望能够验证客户地址字段,以防止他们输入包含邮政信箱的地址。最好将它作为正则表达式实现,以便我可以使用客户端正则表达式验证控件(ASP.NET)。

我意识到可能无法获得100%的检测率,我只是在寻找能够在大多数情况下工作的东西。

asp.net regex shipping street-address
9个回答
3
投票

这应该让你开始。测试以查看Address字段是否与此正则表达式匹配。

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

翻译为英语:在行的开头是P,后跟可选的句点和空格,后跟一个O,后跟一个可选的句点,后跟一个空格,接着是“Box”,然后是其他任何内容。


6
投票

UPS还有可以集成的工具来执行此操作......这样您就可以确切地确定地址是否会发货,成本是多少,时间表等等。我建议您访问UPS IT解决方案页面更多信息。


1
投票

您可能最好在页面上放置免责声明警告您无法发送到邮局信箱,而不是验证输入。

如果你确实创造了一个能够捕获大部分P.O.的正则表达式,那么很可能盒子情景,很有可能它也会捕捉你不想要的东西(即一个街道名称包含字母'p''o'和'box'的客户)


0
投票

我从一个正则表达式ala Lizard开始(但使用“忽略大小写”标志:)),测试历史数据,然后迭代,看看你在测试中看到了什么无效的包含和排除。


0
投票

大多数运输提供商(例如FedEx)将验证送货地址。例如,使用FedEx网络服务时,系统会调用验证送货地址并获取估算的费用。这不仅可以确保地址不是邮政信箱,还可以确保地址的其余部分有效。


0
投票

关于OP对Jason Coco答案的评论:

由于您可以将正则表达式验证添加到送货地址,因此我假设您可以控制应用程序(即,您拥有源并可以对其进行修改)。如果是这种情况,那么您应该能够在收到提交的数据时检查是否要通过USPS,FedEx或UPS运送,并向相应的托运人专用地址验证器提交请求,从而获得所有杰森的回答中提出的好处。

通过使其特定于托运人,这也可以避免实施一刀切的规则,例如“没有邮政信箱,因为UPS无法向他们提供”,即使用户可以选择非UPS托运人谁送货到邮箱。


0
投票

如果它不以“PO Box ..”或“P.O. Box”开头怎么办?

例:

约翰施密特|银谷邮政信箱3901 | Whereswaldoville,SI。 78946

我使用onblur事件为地址字段使用javascript函数indexOf来识别input.toUpperCase“PO BOX”|| “P.O”即> = 0。

如果找不到这两个搜索中的任何一个,则返回-1,否则,它将返回字符串的起始位置,该位置始终为0或更多。

这将确保懒惰的输入,'po box','p.o box'以及'p.o.盒子'将被识别。我想你可以添加'po。盒子'也是。

无论如何,这个条件触发了一个不显眼的消息,表明“我们无法发送到邮政信箱地址。”如果它不适用于您,则不会看到它。否则,对于没有js的用户或css启用,他们只会看到消息。唯一失败的优雅降级是用户有css,但没有启用js(他们根本就看不到消息)。我只想出了今天的解决方案,但如果我想到一个更好的方法,我会回来发布它。


0
投票

不幸的是,UPS的在线软件允许P.O.箱子经过,但一旦他们在航运渠道就会窒息。在我们的情况下,当我们试图优雅地阻止P.O.时,我们的购物车放弃率上升了。盒。我们发现将它放在一边,接受销售,引起客户服务注意并让它们解决它更具成本效益。当然,如果您获得P.O Boxes的高发率,这可能不是您的情况。


0
投票

从原来的问题:

我意识到可能无法获得100%的检测率,......

实际上,有。

如果地址首先使用地址验证工具(我工作的公司生产YAddress)验证并标准化为USPS格式,那么所有P.O.盒子地址无一例外地拼写为“PO BOX ......”。之后,您可以对它们进行字符串比较,以获得100%准确度的完全匹配。

© www.soinside.com 2019 - 2024. All rights reserved.