Я ищу окончательный почтовый индекс и регулярное выражение почтового индекса. Я ищу что-то, что охватит большую часть (надеюсь, весь мир).
regex
zipcode
postal-code
Дэррил Хейн
источник
источник
Ответы:
Здесь ничего нет.
Почтовые / почтовые индексы по всему миру не следуют общему шаблону. В некоторых странах они состоят из цифр, в других они могут быть комбинациями цифр и букв, некоторые могут содержать пробелы, другие точки, количество символов может варьироваться от двух до не менее шести ...
То, что вы могли бы сделать (теоретически), это создать отдельное регулярное выражение для каждой страны в мире, не рекомендуется ИМО. Но вы все равно пропустите часть проверки: почтовый индекс
12345
может существовать, но12346
, может быть,12344
и не существует. Как вы можете проверить это с помощью регулярного выражения?Ты не можешь
источник
^\d{5}(?:[-\s]\d{4})?$
Юникод CLDR содержит регулярное выражение для каждой страны. (Всего 158 регулярных выражений!)
core.zip
с http://unicode.org/Public/cldr/26.0.1/common/supplemental/postalCodeData.xml
разархивированный контент (прямой контент: common / Additional / postalCodeData.xml )У Google также есть веб-сервис с информацией о форматировании адресов для каждой страны, включая почтовые индексы, здесь - http://i18napis.appspot.com/address (я нашел эту ссылку через http://unicode.org/review/pri180/ ).
редактировать
Вот копия регулярного выражения postalCodeData.xml :
источник
использовать эти regx
источник
Каждая система почтовых индексов использует только AZ и / или 0-9 и иногда пробел / тире
Не каждая страна использует почтовые индексы (например, Ирландия за пределами Дублина), но мы проигнорируем это здесь.
Самый короткий формат почтового индекса - Сьерра-Леоне с
NN
Самым длинным является Американское Самоа с
NNNNN-NNNNNN
Вы должны позволить один пробел или тире.
Не должно начинаться или заканчиваться пробелом или тире
Это должно охватывать вышеупомянутое:
источник
Попытка охватить весь мир одним регулярным выражением не вполне возможна и, конечно, неосуществима или не рекомендуется.
Не говоря уже о моем собственном роге, но я написал несколько довольно подробных регулярных выражений, которые могут оказаться полезными.
Канадские почтовые индексы
Почтовые индексы США
Почтовые индексы Великобритании
Невозможно гарантировать точность без фактической отправки чего-либо по адресу и без того, чтобы человек сообщал вам об этом, когда мы его получили, но мы можем сузить круг вопросов, исключив случаи, которые, как мы знаем, являются плохими.
источник
Это похоже на хорошую ссылку, хотя это не в Regex.
На самом деле, если вы на самом деле не отправляете что-то своим пользователям, я не думаю, что это стоит усилий. А если будут грузить его, есть адрес чистящие средства / услуги , которые вы можете посмотреть в , чтобы сделать его намного легче на себя.
источник
Мы используем следующее:
Канада
Америка
Другой
источник
В зависимости от вашего приложения, вы можете захотеть реализовать сопоставление регулярных выражений для стран, откуда отправляется большинство ваших посетителей, а для остальных нет проверки (принять что-либо).
источник
Big Jump забыл про разрывы строк, пробелы и управляющие символы.
Международные почтовые индексы являются своего рода проблемой остановки.
источник
Обращаем ваше внимание, что это довольно сложная проблема, о чем свидетельствует принятый ответ. Я думаю, что это не остановило людей на geonames.org . У них есть файл с информацией о стране , который не полностью вписывается в этот ответ - очевидно, ограничение составляет 30000 символов. Есть регулярные выражения для около 150 стран.
Я извлек биты, имеющие отношение к этому вопросу здесь:
Надеюсь, я не ошибся, мое регулярное выражение довольно слабое.
источник
Если кто-то все еще интересуется, как проверить почтовые индексы, я нашел решение:
Используя
Google Geocoding API
мы можем проверить действительность почтового индекса, имеющего как код страны, так и сам почтовый индекс.Например, я живу в Украине, поэтому я могу проверить это следующим образом: https://maps.googleapis.com/maps/api/geocode/json?components=postal_code:80380|country:UA
Или используя JS API: https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering
Где
80380
действителен ZIP для Украины, фактически каждый (#####) действителен.Google возвращает
ZERO_RESULTS
статус, если ничего не найдено. ИлиOK
и результат, если оба верны.Надеюсь, это будет полезно.
источник
Как уже отмечали другие, одно правило для управления ими всеми маловероятно. Тем не менее, вы можете создавать регулярные выражения для любого количества стран, используя необходимую информацию о форматировании адресов из Универсального почтового союза - малоизвестного агентства ООН.
Например, вот несколько правил форматирования адресов, включая почтовый индекс, для нескольких стран (формат PDF):
источник
Проблема будет в том, что у вас, вероятно, нет хороших средств для того, чтобы идти в ногу с изменяющимися требованиями к почтовым индексам стран на другой стороне земного шара, и у которых у вас нет общих языков. Если у вас нет достаточно большого бюджета для отслеживания этого, вам почти наверняка лучше поручить проверку адресов в Google или Yahoo.
Обе компании предоставляют возможности поиска адресов через программируемый API.
источник
Почему ты это делаешь и почему тебя это волнует? Как отметил Том Риттер, не имеет значения, есть ли у вас вообще какой-либо почтовый индекс, тем более, действительный он или нет, до тех пор, пока вы действительно не собираетесь отправлять что-либо по этому адресу. Даже если вы ожидаете, что когда-нибудь отправите им что- нибудь , это не значит, что вам нужен почтовый индекс сегодня .
источник
Как уже отмечалось, вариации по всему миру огромны. И даже если что-то, что соответствует шаблону, не означает, что оно существует.
Тогда, конечно, есть много мест, где почтовые индексы не используются (например, много или Ирландия).
источник
Для точного почтового индекса существуют и другие причины, помимо доставки. Турагентства, совершающие туры, которые пересекают границы (за исключением Еврозоны, конечно), должны заблаговременно предоставить эту информацию властям. Часто эта информация вводится агентом, который может или не может быть знаком с такими вещами. ЛЮБОЙ метод, который может сократить количество ошибок - это Good Idea ™
Однако написание регулярного выражения, которое охватывало бы все почтовые индексы в мире, было бы безумным.
источник
Учитывая, что для каждой страны существует так много крайних случаев (например, лондонские адреса могут использовать немного другой формат по сравнению с остальной частью Великобритании), я не думаю, что есть конечное регулярное выражение, отличное от:
Лучше всего идти по довольно широкой схеме (ну, не так широко, как указано выше), или относиться к каждой стране / региону со своей собственной структурой!
ОБНОВЛЕНИЕ: Тем не менее, может быть возможно динамически построить регулярное выражение, основанное на множестве более мелких, специфичных для региона правил - хотя и не уверен в производительности!
На сайте RegExLib можно найти множество шаблонов для конкретных стран .
источник
Кто-то спрашивал о списке форматирования почтовых адресов, и я думаю, это то, что он искал ...
Обязательное руководство Фрэнка по почтовым адресам: http://www.columbia.edu/~fdc/postal/ Однако мало помогает в решении проблем на уровне улиц.
Моя работа использует несколько инструментов, чтобы помочь с этим: - Сервисы Lexis-Nexis, включая поиск NCOA (вы получите стандартизацию адресов бесплатно) - «Melissa Data» http://www.melissadata.com
источник
Это очень простой RegEx для проверки почтового индекса США (не ZipCode Plus Four):
Кажется , все пять значного являются действительными , кроме Почтовые индексы
00000
,88888
&99999
.Я проверил этот RegEx с http://regexpal.com/
SP
источник
Если
Zip Code
разрешены символы и цифры (алфавитно-цифровые), то здесь используется регулярное выражение, где оно совпадает, 5, 9 или 10 буквенно-цифровых символов с одним переносом (-
):источник