Я пытаюсь понять, что было бы хорошим способом проверить адрес в США, я знаю, что может быть неправильный способ сделать это, но я иду по основному пути: #, Название улицы, город, штат и почтовый индекс.
Любые идеи будут оценены. Благодаря
Я пытаюсь понять, что было бы хорошим способом проверить адрес в США, я знаю, что может быть неправильный способ сделать это, но я иду по основному пути: #, Название улицы, город, штат и почтовый индекс.
Любые идеи будут оценены. Благодаря
Не пытайтесь. У кого-то, скорее всего, есть почтовый ящик, номер квартиры и т.д., И они будут очень рассержены. Даже "нормальное" название улицы может иметь номера, такие как 125-я улица (и многие другие) в Нью-Йорке. Даже в пригороде могут быть пронумерованные улицы.
И названия городов могут иметь пробелы.
Попросите пользователя ввести части адреса в отдельных полях (название улицы, город, штат и почтовый индекс) и использовать любую проверку, подходящую для такого поля. Это общая практика.
В качестве альтернативы, если вам нужно простейшее из регулярных выражений, которое соответствует четырем строкам, разделенным тремя запятыми, попробуйте следующее:
/^(.+),([^,]+),([^,]+),([^,]+)$/
Если все будет соответствовать, вы можете использовать дополнительное сопоставление образцов для проверки компонентов адреса. Невозможно проверить действительность уличного адреса, но вы можете отправлять текстовые коды и коды состояний.
Существует слишком много вариантов адреса, чтобы иметь возможность делать это с помощью регулярных выражений. Вам лучше найти веб-сервис, который может проверять адреса. У USPS есть один - вам нужно будет запросить разрешение на его использование.
Я согласен с salman: пользователь вводит данные в разных полях (один для zip, один для состояния, один для города и один для имени #/улицы. Используйте другое регулярное выражение для каждого поля. /name лучшее выражение, которое я придумал, было
/^[0-9]{1,7} [a-zA-z0-9]{2,35}\a*/
Это не пуленепробиваемое решение, но предполагается, что адрес начинается с числового номера улицы и заканчивается почтовым индексом, который может быть либо 5, либо 9.
([0-9] {1,} [\ s\S] *? [0-9] {5} (?: - [0-9] {4})?)
Как я уже сказал, это не пуленепробиваемый, но я использовал его с маргинальным успехом в прошлом.
Здесь, в Новой Зеландии, вы можете лицензировать официальный список почтовых адресов из New Zealand Post - предоставить вам данные, необходимые для заполнения таблицу со всеми действительными почтовыми адресами в Новой Зеландии.
Утверждение против этого списка намного проще, чем попытка придумать Regex - и точность намного выше, так как вы заканчиваете тремя случаями:
Лучшее, что вы получите с помощью RegEx,
Необходимость знать почтовые адреса - довольно распространенная ситуация для многих компаний, поэтому я считаю, что лицензирование списка будет возможно в большинстве областей.
Единственный липкий бит будет ценой.
Используйте программное обеспечение CASS, подобное этому на http://semaphorecorp.com/cgi/zp4.html
Стандартный формат документируется в публикации 28 как usps.com
Если вы проверяете окончательное обнаружение обмана, прочитайте http://semaphorecorp.com/mpdd/mpdd.html