Каковы окончательный индекс и zip regex?

Каждый объект знает свой собственный тип во время выполнения (доступен через getClass()). Стирание типов - это когда универсальные типы (то есть List<T>) «забывают», какой тип они имеют во время выполнения, а это означает, что JVM не может определить разницу между a List<Integer> и a List<String>; у него просто два List с. Это может быть продемонстрировано тем фактом, что new ArrayList<Integer>().getClass() == new ArrayList<String>().getClass() оценивается как истинное.

187
задан cHao 13 November 2012 в 17:15
поделиться

10 ответов

Нет ни одного.

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

то, Что Вы могли сделать (теоретически), создают отдельный regex для каждой страны в мире, не рекомендуемый IMO. Но Вы все еще отсутствовали бы на части проверки: почтовый индекс 12345 может существовать, но 12346 не, возможно 12344 не существует также. Как Вы проверяете на это с regex?

Вы не можете.

120
ответ дан Treb 23 November 2019 в 05:44
поделиться

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

[0-9a-zA-Z]+

Лучше всего движения с довольно широким шаблоном (хорошо не совсем настолько же широко как вышеупомянутое), или обработка каждая страна/регион с определенным собственным шаблоном!

ОБНОВЛЕНИЕ: Однако может быть возможно динамично создать regex основанное на большом количестве меньших, регион определенные правила - не уверенный в производительности хотя!

Партии страны определенные шаблоны могут быть найдены на сайт RegExLib .

1
ответ дан Brad Gilbert 23 November 2019 в 05:44
поделиться

Как отмечено в другом месте изменение во всем мире огромно. И даже если что-то, что соответствует шаблону, не означает, что он существует.

Затем конечно, существует много мест, где почтовые индексы не используются (например, очень или Ирландия).

1
ответ дан Richard 23 November 2019 в 05:44
поделиться

Почему Вы делаете это и почему Вы заботитесь? Как Tom Ritter указал, не имеет значения, есть ли у Вас даже почтовый индекс вообще, а тем более допустимо ли это или нет, до и если Вы на самом деле не собираетесь быть отправкой чего-то к тому адресу. Даже если Вы ожидаете, что будете отправлять им что-то когда-нибудь , который не означает, что Вам нужен индекс сегодня .

1
ответ дан Dave Sherohman 23 November 2019 в 05:44
поделиться

Проблема будет этим, у Вас, вероятно, нет хороших средств не отставания от изменяющихся требований индекса стран с другой стороны земного шара и который Вы не совместно используете общих языков. Если у Вас нет достаточно большого бюджета для отслеживания этого, Вы - почти наверняка более обеспеченное предоставление ответственности проверки адресов к Google или Yahoo.

Обе компании обеспечивают поиск адреса facuilities через программируемый API.

2
ответ дан SingleNegationElimination 23 November 2019 в 05:44
поделиться

В зависимости от Вашего приложения Вы могли бы хотеть реализовать соответствие regex для стран, где большинство Ваших посетителей происходит, и никакая проверка для остальных (примите что-либо).

7
ответ дан Dónal 23 November 2019 в 05:44
поделиться

Мы используем следующее:

Канада

([A-Z]{1}[0-9]{1}){3}   //We raise to upper first

Америка

[0-9]{5}                //-or-
[0-9]{5}-[0-9]{4}       //10 digit zip

Другой

Принимает, как

8
ответ дан Gavin Miller 23 November 2019 в 05:44
поделиться

Это похоже на хорошую ссылку , хотя это не находится в Regex.

Действительно, если Вы не на самом деле поставка что-то Вашим пользователям, я не думаю, что это стоит усилия. И если Вы поставка это, существуют инструменты/сервисы очистки адреса, которые можно изучить для создания этого путем легче на себе.

13
ответ дан Tom Ritter 23 November 2019 в 05:44
поделиться

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

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

  • канадские индексы

    Basic validation:
    ^[ABCEGHJ-NPRSTVXY]{1}[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[ ]?[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[0-9]{1}$
    
    Extended validation:
    ^(A(0[ABCEGHJ-NPR]|1[ABCEGHK-NSV-Y]|2[ABHNV]|5[A]|8[A])|B(0[CEHJ-NPRSTVW]|1[ABCEGHJ-NPRSTV-Y]|2[ABCEGHJNRSTV-Z]|3[ABEGHJ-NPRSTVZ]|4[ABCEGHNPRV]|5[A]|6[L]|9[A])|C(0[AB]|1[ABCEN])|E(1[ABCEGHJNVWX]|2[AEGHJ-NPRSV]|3[ABCELNVYZ]|4[ABCEGHJ-NPRSTV-Z]|5[ABCEGHJ-NPRSTV]|6[ABCEGHJKL]|7[ABCEGHJ-NP]|8[ABCEGJ-NPRST]|9[ABCEGH])|G(0[ACEGHJ-NPRSTV-Z]|1[ABCEGHJ-NPRSTV-Y]|2[ABCEGJ-N]|3[ABCEGHJ-NZ]|4[ARSTVWXZ]|5[ABCHJLMNRTVXYZ]|6[ABCEGHJKLPRSTVWXZ]|7[ABGHJKNPSTXYZ]|8[ABCEGHJ-NPTVWYZ]|9[ABCHNPRTX])|H(0[HM]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NPRSTV-Z]|4[ABCEGHJ-NPRSTV-Z]|5[AB]|7[ABCEGHJ-NPRSTV-Y]|8[NPRSTYZ]|9[ABCEGHJKPRSWX])|J(0[ABCEGHJ-NPRSTV-Z]|1[ACEGHJ-NRSTXZ]|2[ABCEGHJ-NRSTWXY]|3[ABEGHLMNPRTVXYZ]|4[BGHJ-NPRSTV-Z]|5[ABCJ-MRTV-Z]|6[AEJKNRSTVWYXZ]|7[ABCEGHJ-NPRTV-Z]|8[ABCEGHLMNPRTVXYZ]|9[ABEHJLNTVXYZ])|K(0[ABCEGHJ-M]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-MPRSTVW]|4[ABCKMPR]|6[AHJKTV]|7[ACGHK-NPRSV]|8[ABHNPRV]|9[AHJKLV])|L(0[[ABCEGHJ-NPRS]]|1[ABCEGHJ-NPRSTV-Z]|2[AEGHJMNPRSTVW]|3[BCKMPRSTVXYZ]|4[ABCEGHJ-NPRSTV-Z]|5[ABCEGHJ-NPRSTVW]|6[ABCEGHJ-MPRSTV-Z]|7[ABCEGJ-NPRST]|8[EGHJ-NPRSTVW]|9[ABCGHK-NPRSTVWYZ])|M(1[BCEGHJ-NPRSTVWX]|2[HJ-NPR]|3[ABCHJ-N]|4[ABCEGHJ-NPRSTV-Y]|5[ABCEGHJ-NPRSTVWX]|6[ABCEGHJ-NPRS]|7[AY]|8[V-Z]|9[ABCLMNPRVW])|N(0[ABCEGHJ-NPR]|1[ACEGHKLMPRST]|2[ABCEGHJ-NPRTVZ]|3[ABCEHLPRSTVWY]|4[BGKLNSTVWXZ]|5[ACHLPRV-Z]|6[ABCEGHJ-NP]|7[AGLMSTVWX]|8[AHMNPRSTV-Y]|9[ABCEGHJKVY])|P(0[ABCEGHJ-NPRSTV-Y]|1[ABCHLP]|2[ABN]|3[ABCEGLNPY]|4[NPR]|5[AEN]|6[ABC]|7[ABCEGJKL]|8[NT]|9[AN])|R(0[ABCEGHJ-M]|1[ABN]|2[CEGHJ-NPRV-Y]|3[ABCEGHJ-NPRSTV-Y]|4[AHJKL]|5[AGH]|6[MW]|7[ABCN]|8[AN]|9[A])|S(0[ACEGHJ-NP]|2[V]|3[N]|4[AHLNPRSTV-Z]|6[HJKVWX]|7[HJ-NPRSTVW]|9[AHVX])|T(0[ABCEGHJ-MPV]|1[ABCGHJ-MPRSV-Y]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NPRZ]|4[ABCEGHJLNPRSTVX]|5[ABCEGHJ-NPRSTV-Z]|6[ABCEGHJ-NPRSTVWX]|7[AENPSVXYZ]|8[ABCEGHLNRSVWX]|9[ACEGHJKMNSVWX])|V(0[ABCEGHJ-NPRSTVWX]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NRSTV-Y]|4[ABCEGK-NPRSTVWXZ]|5[ABCEGHJ-NPRSTV-Z]|6[ABCEGHJ-NPRSTV-Z]|7[ABCEGHJ-NPRSTV-Y]|8[ABCGJ-NPRSTV-Z]|9[ABCEGHJ-NPRSTV-Z])|X(0[ABCGX]|1[A])|Y(0[AB]|1[A]))[ ]?[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[0-9]{1}$
    
  • американские почтовые индексы

    ^[0-9]{5}(-[0-9]{4})?$
    
  • британские почтовые индексы

    ^([A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\ [0-9][ABD-HJLNP-UW-Z]{2}|(GIR\ 0AA)|(SAN\ TA1)|(BFPO\ (C\/O\ )?[0-9]{1,4})|((ASCN|BBND|[BFS]IQQ|PCRN|STHL|TDCU|TKCA)\ 1ZZ))$
    

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

17
ответ дан hakre 23 November 2019 в 05:44
поделиться

Указать точный почтовый индекс нельзя по причинам, не связанным с доставкой. Туристическим агентствам, осуществляющим туры, которые пересекают границы (конечно, за исключением еврозоны), эта информация необходима заранее, чтобы предоставить властям. Часто эту информацию вводит агент, который может быть знаком с такими вещами, а может и не знать. ЛЮБОЙ метод, который может сократить количество ошибок, - это Хорошая идея ™

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

1
ответ дан 23 November 2019 в 05:44
поделиться
Другие вопросы по тегам:

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