AFAIK, и substring()
и indexOf()
поддерживаются и Mozilla и IE. Однако обратите внимание, что substr () не мог бы поддерживаться на более ранних версиях некоторых браузеров (особенно Netscape/Opera).
Ваше сообщение указывает, что Вы уже знаете, как сделать это с помощью substring()
и indexOf()
, таким образом, я не отправляю пример кода.
Существует слишком много вариантов адреса, чтобы можно было делать это с помощью регулярных выражений. Лучше найти веб-сервис, который может проверять адреса. У USPS есть один - вам нужно будет запросить разрешение на его использование.
Здесь, в Новой Зеландии, вы можете лицензировать официальный список почтовых адресов из New Zealand Post , предоставляя вам данные, необходимые для заполнения таблицы с каждые действующий почтовый адрес в Новой Зеландии.
Проверять этот список намного проще, чем пытаться придумать регулярное выражение - и точность намного намного выше, так как вы получите три случая:
Лучшее, что вы получите с RegEx, - это
Необходимость знать почтовые адреса - довольно распространенная ситуация для многих предприятий, поэтому я считаю что лицензирование списка будет возможно в большинстве областей.
Единственный фиксированный бит - это цена.
Это не пуленепробиваемое решение, но предполагается, что адрес начинается с номера улицы и заканчивается почтовым индексом, который может либо может быть 5 или 9.
([0-9] {1,} [\ s \ S] *? [0-9] {5} (?: - [0-9] {4})?)
Как я уже сказал, он не пуленепробиваемый, но в прошлом я использовал его с незначительным успехом.
Попросите пользователя ввести части адреса в отдельные поля (название улицы, город, штат и почтовый индекс) и использовать любую проверку, подходящую для такого поля. Это обычная практика.
В качестве альтернативы, если вы хотите простейшее регулярное выражение, которое соответствует четырем строкам, разделенным тремя запятыми, попробуйте следующее:
/^(.+),([^,]+),([^,]+),([^,]+)$/
Если что-то совпадает, вы можете использовать дополнительное сопоставление с образцом для проверки компонентов адреса. Невозможно проверить действительность почтового адреса, но вы можете отправить текстовые сообщения с почтовыми индексами и кодами штата.
Не пытайтесь. У кого-то, скорее всего, есть почтовый ящик, номер квартиры и т. Д., И он будет действительно рассержен на вас. Даже «нормальное» название улицы может иметь номера, например, 125-я улица (и многие другие) в Нью-Йорке. Даже в пригороде могут быть пронумерованные улицы.
И названия городов могут иметь пробелы.