Лучшие стратегии предотвращения адресов с почтовыми ящиками?

StackOverflow https://stackoverflow.com/questions/281743

Вопрос

У меня есть клиент, который осуществляет доставку через UPS и поэтому не может доставить товар в почтовые ящики.Я хотел бы иметь возможность проверять поля адресов клиентов, чтобы они не могли вводить адреса, которые включают почтовый ящик.Было бы лучше, если бы это было реализовано как регулярное выражение, чтобы я мог использовать элемент управления проверкой регулярных выражений на стороне клиента (ASP.NET).

Я понимаю, что, вероятно, невозможно добиться 100%-ного уровня обнаружения, я просто ищу что-то, что будет работать в большинстве случаев.

Это было полезно?

Решение

Это должно помочь вам начать. Проверьте, соответствует ли поле адреса этому регулярному выражению.

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

Перевод на английский: это буква P в начале строки, после которой указываются необязательный период и пробел, за ними следует буква O, затем необязательный период, затем пробел, после которого следует "Box", а затем что-нибудь еще.

Другие советы

У UPS также есть инструменты, которые вы можете интегрировать, чтобы сделать это ... чтобы вы могли точно проверить адрес относительно того, будут ли они отправляться, сколько будет стоить, расписания и т. д. Я предлагаю посетить ИТ-отдел UPS. Страница решений для получения дополнительной информации.

Возможно, вам лучше разместить на странице заявление об отказе от ответственности, что вы не можете отправить его в почтовые ящики, в отличие от проверки ввода.

Более чем вероятно, если вы создадите регулярное выражение, которое улавливает большую часть P.O. В сценариях с блоками есть хороший шанс, что он также поймает вещи, которые вы не намеревались (например, клиент с названием улицы, содержащим буквы «p», «o» и «box»)

Я бы начал с регулярного выражения «Ящерица» (но использовал флаг «игнорировать регистр» :)), проверил исторические данные, а затем итерацию, чтобы увидеть, какие недопустимые включения и исключения вы видите в тестировании.

Большинство поставщиков услуг доставки (например, FedEx) проверяют адрес доставки. Например, в веб-службах FedEx существует звонок для подтверждения адреса доставки и получения приблизительной стоимости. Это не только гарантирует, что адрес не является почтовым ящиком, но также гарантирует, что остальная часть адреса является действительной.

Что касается комментария ОП к ответу Джейсона Коко:

Поскольку вы можете добавить проверку правильности регулярного выражения к адресу доставки, я предполагаю, что у вас есть контроль над приложением (т. е. у вас есть источник и вы можете изменить его). Если это так, то вы должны иметь возможность при получении отправленных данных проверить, должны ли они быть отправлены через USPS, FedEx или UPS, и отправить запрос соответствующему валидатору адреса конкретного грузоотправителя, получив все преимущества, предложенные в ответе Джейсона.

Сделав его специфичным для грузоотправителя, это также позволит вам избежать реализации правил «один размер подходит всем», таких как «нет почтовых ящиков, потому что UPS не доставляет им», даже если пользователь может выбрать грузоотправители не UPS, которые доставляют в почтовые ящики.

Что, если оно не начинается с «PO Box..» или «P.O.Коробка" ?

Пример:

Джон Шмидт | Silver Valley PO Box 3901 | Где Whipaldoville, Si.78946

Я использовал событие онблурского события для поля адреса, чтобы использовать функцию JavaScript, IndexOF, для распознавания input.touppercase "Po Box" || "PO", который> = 0.

Если какой-либо из этих двух поисков не найден, возвращается -1, в противном случае будет возвращена начальная позиция строки, которая всегда будет равна 0 или более.

Это гарантирует, что отложенный набор текста, «почтовый ящик», «почтовый ящик», а также «почтовый ящик».box» будет распознан.Полагаю, вы могли бы добавить «po.коробка» тоже.

В любом случае, это условие вызывает ненавязчивое сообщение о том, что «Мы не можем отправить товар на почтовый ящик». Это функция, позволяющая не видеть ее, если она к вам не относится.В противном случае пользователи, у которых не включен js или css, просто увидят это сообщение.Единственная ошибка в этом постепенном ухудшении — это если у пользователя включен CSS, но не включен js (когда он вообще не увидит сообщение).Я нашел решение только сегодня, но если я придумаю лучший способ, я вернусь и опубликую его здесь.

К сожалению, онлайн-программное обеспечение UPS позволяет P.O. Ящики нужно пройти, но они захлебнутся, как только они попадут в канал доставки. В нашем случае наш показатель отказа от корзины увеличился, когда мы попытались изящно предотвратить P.O. Коробки. Мы обнаружили, что гораздо выгоднее оставить это в покое, принять продажу, довести ее до сведения службы поддержки клиентов и позволить им решить эту проблему. Конечно, если у вас высокий уровень заболеваемости P.O Boxes, это может быть не так.

Исходный вопрос:

  

Я понимаю, что, вероятно, нет способа получить 100% уровень обнаружения, ...

На самом деле, есть.

Если адрес сначала проверяется и стандартизируется в формате USPS с использованием инструмента проверки адреса (компания, в которой я работаю, делает YAddress ), тогда все ПО Адреса ящиков без исключения будут записаны как «PO BOX ...». После этого вы можете сравнить их на предмет совпадения с точностью до 100%.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top