PHP regexp американский адрес

AFAIK, и substring() и indexOf() поддерживаются и Mozilla и IE. Однако обратите внимание, что substr () не мог бы поддерживаться на более ранних версиях некоторых браузеров (особенно Netscape/Opera).

Ваше сообщение указывает, что Вы уже знаете, как сделать это с помощью substring() и indexOf(), таким образом, я не отправляю пример кода.

5
задан Juha Syrjälä 21 May 2010 в 16:14
поделиться

5 ответов

Существует слишком много вариантов адреса, чтобы можно было делать это с помощью регулярных выражений. Лучше найти веб-сервис, который может проверять адреса. У USPS есть один - вам нужно будет запросить разрешение на его использование.

2
ответ дан 13 December 2019 в 05:39
поделиться

Здесь, в Новой Зеландии, вы можете лицензировать официальный список почтовых адресов из New Zealand Post , предоставляя вам данные, необходимые для заполнения таблицы с каждые действующий почтовый адрес в Новой Зеландии.

Проверять этот список намного проще, чем пытаться придумать регулярное выражение - и точность намного намного выше, так как вы получите три случая:

  • Адрес Вы проверяете, находится в списке, поэтому вы знаете, что это настоящий адрес
  • Адрес, который вы проверяете, очень похож на адрес в списке, поэтому вы знаете, что это, вероятно, настоящий адрес
  • Адрес, который вы 're validating не похож на список, поэтому он может быть или не быть реальным.

Лучшее, что вы получите с RegEx, - это

  • Адрес, который вы проверяете, соответствует регулярному выражению, так что это может быть реальный адрес
  • Адрес, который вы проверяете, не соответствует регулярному выражению, поэтому это может быть не настоящий адрес

Необходимость знать почтовые адреса - довольно распространенная ситуация для многих предприятий, поэтому я считаю что лицензирование списка будет возможно в большинстве областей.

Единственный фиксированный бит - это цена.

0
ответ дан 13 December 2019 в 05:39
поделиться

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

([0-9] {1,} [\ s \ S] *? [0-9] {5} (?: - [0-9] {4})?)

Как я уже сказал, он не пуленепробиваемый, но в прошлом я использовал его с незначительным успехом.

0
ответ дан 13 December 2019 в 05:39
поделиться

Попросите пользователя ввести части адреса в отдельные поля (название улицы, город, штат и почтовый индекс) и использовать любую проверку, подходящую для такого поля. Это обычная практика.

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

/^(.+),([^,]+),([^,]+),([^,]+)$/

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

4
ответ дан 13 December 2019 в 05:39
поделиться

Не пытайтесь. У кого-то, скорее всего, есть почтовый ящик, номер квартиры и т. Д., И он будет действительно рассержен на вас. Даже «нормальное» название улицы может иметь номера, например, 125-я улица (и многие другие) в Нью-Йорке. Даже в пригороде могут быть пронумерованные улицы.

И названия городов могут иметь пробелы.

4
ответ дан 13 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: