Ответ 1
Буквенное выражение Javascript:
US Zip Codes: /(^\d{5}$)|(^\d{5}-\d{4}$)/
var isValidZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/.test("90210");
В некоторых странах используются Почтовые коды, которые не смогут выполнить этот шаблон.
Я думал, что люди будут работать над небольшими проектами кода вместе, но я их не вижу, поэтому здесь легко:
Код, который проверяет действительный почтовый индекс США. Я знаю, что там есть базы данных почтовых индексов, но все еще используются, например, веб-страницы, быстрая проверка, а также тот факт, что почтовые индексы продолжают выдаваться, поэтому вы можете использовать слабую проверку.
Я написал немного о почтовых индексах в боковом проекте в моей вики/блоге:
https://benc.fogbugz.com/default.asp?W24
Существует также новый, странный тип почтового индекса.
https://benc.fogbugz.com/default.asp?W42
Я могу сделать код javascript, но было бы интересно посмотреть, сколько языков мы можем получить здесь.
Буквенное выражение Javascript:
US Zip Codes: /(^\d{5}$)|(^\d{5}-\d{4}$)/
var isValidZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/.test("90210");
В некоторых странах используются Почтовые коды, которые не смогут выполнить этот шаблон.
function isValidUSZip(sZip) {
return /^\d{5}(-\d{4})?$/.test(sZip);
}
Здесь функция JavaScript, которая проверяет почтовый индекс ZIP/почтовый индекс на основе кода страны. Это позволяет несколько либеральное форматирование. Вы можете добавить случаи и для других стран. Обратите внимание, что случай по умолчанию позволяет пустые почтовые коды, так как не все страны используют их.
function isValidPostalCode(postalCode, countryCode) {
switch (countryCode) {
case "US":
postalCodeRegex = /^([0-9]{5})(?:[-\s]*([0-9]{4}))?$/;
break;
case "CA":
postalCodeRegex = /^([A-Z][0-9][A-Z])\s*([0-9][A-Z][0-9])$/;
break;
default:
postalCodeRegex = /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/;
}
return postalCodeRegex.test(postalCode);
}
FYI Вторая ссылка, относящаяся к сумасшедшим почтовым индексам, кажется, была шутка в апреле.
Если вы делаете для Канады, помните, что не все буквы действительны
Эти буквы недействительны: D, F, I, O, Q или U И буквы W и Z не используются в качестве первой буквы. Также некоторые люди используют дополнительное пространство после третьего символа.
Вот регулярное выражение для канадского почтового кода:
new RegExp(/^[abceghjklmnprstvxy][0-9][abceghjklmnprstvwxyz]\s?[0-9][abceghjklmnprstvwxyz][0-9]$/i)
Последний я делает регистр нечувствительным.
Не утруждайте себя "проверкой" почтовых индексов на 5 цифр, они устарели, как описано в здесь
Правильная проверка адресов и ZIP + 4 кода выполняется с помощью программного обеспечения CASS для баз данных USPS.
Здесь один из jQuery Validate plugin additional-methods.js
file...
jQuery.validator.addMethod("zipUS", function(value, element) {
return /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(value);
}, "Please specify a valid US zip code.");
EDIT. Поскольку указанный код является частью плагина jQuery Validate, он зависит от метода .addMethod()
.
Удалите зависимость от плагинов и сделайте ее более общей....
function checkZip(value) {
return (/(^\d{5}$)|(^\d{5}-\d{4}$)/).test(value);
};
Пример использования http://jsfiddle.net/5PNcJ/
Это хорошее решение JavaScript для проверки, которое у вас есть:
/\b\d{5}-\d{4}\b/
Как я работаю в почтовой отрасли в течение 17 лет, я видел все виды ввода данных в этой области. Мне интересно, сколько людей не знают их адрес, как это определено USPS. Я до сих пор вижу такие адреса:
Колледж XYZ
ИТ-отдел
Город, Санкт-ZIP
Худшая часть - это почта, на которую отправлено 99% времени, а другой 1%, ну, что возвращается для неполного адреса, как следует.
В более раннем сообщении кто-то упомянул USPS CASS, что программное обеспечение не бесплатно.
В regex тестер zip-кода хорош, я использую выражения для определения почтового индекса US, CA, UK или AU. Я видел выражения для Японии и других, которые только добавляют проблемы при выборе правильной страны, к которой принадлежит zip.
На сегодняшний день лучше всего использовать Drop Down Lists для State и Country. Затем используйте таблицы для дальнейшей проверки, если необходимо. Чтобы дать вам представление, есть 84052 приемлемых комбинаций US City St Zip всего за первые 5 цифр. В соответствии с ISO существует 249 действующих стран, и существует 65 государств и территорий США.
Существуют только военные, почтовые ящики и уникальные классы почтового индекса. Здесь применяется KISS.
Предложите вам ознакомиться с API-интерфейсами адресов USPS. Вы можете проверить почтовый индекс и получить стандартные отформатированные адреса. https://www.usps.com/business/web-tools-apis/address-information.htm
Один из способов проверить действительный почтовый код Канады -
function isValidCAPostal(pcVal) {
return ^[A-Za-z][0-9][A-Za-z]\s{0,1}[0-9][A-Za-z][0-9]$/.test(pcVal);
}
Надеюсь, это поможет кому-то.
Чтобы продолжить мой ответ, UPS и FedEx не могут доставить PO BOX, не используя USPS в качестве конечного обработчика. Большинство программ для доставки не позволят почтовому ящику PO для стандартных услуг. Примеры почтовых ящиков PO Box 00604 - RAMEY, PR и 06141 - HARTFORD, CT.
Вся необходимая проверка почтовых индексов действительно может быть вопросом о том, как далеко вы продвигаетесь, каков бюджет, какова временная линия.
Как и в случае с тестами, испытаниями, испытаниями и тестами. У меня было выражение для проверки состояния и я обнаружил, что YORK прошел, когда он потерпел неудачу. Один раз в тысячах кто-то вошел в Нью-Йорк, Нью-Йорк 10279, тьфу.
Также имейте в виду, что USPS не любит знаки препинания, такие как N. Market St., а также имеет очень конкретные допустимые сокращения для таких вещей, как Lane, Place, North, Corporation и т.д.
Drupal 7 также имеет легкое решение здесь, это позволит вам проверять несколько разных стран.
https://drupal.org/project/postal_code_validation
Вам также понадобится этот модуль
https://drupal.org/project/postal_code
Протестируйте его в http://simplytest.me/
Вы имеете в виду проверку адреса? Как и предыдущий ответ Майка, вам нужно обслуживать 95%.
Что вы можете сделать, когда пользователь выбирает свою страну, а затем активирует проверку. Проверка адреса и проверка почтового индекса - это две разные вещи. Проверка ZIP - это просто подтверждение его целого числа. Проверка адреса проверяет фактический адрес для точности, предпочтительно для рассылки.
Чтобы позволить пользователю вводить канадский почтовый код с строчными буквами, регулярное выражение должно выглядеть следующим образом:
/^ ([A-Za-Z] [0-9] [A-Za-Z])\S * ([0-9] [A-Za-Z] [0-9]) $/