Validação do Código Postal dos EUA

Pensei que as pessoas estariam a trabalhar em pequenos projectos de código juntos, mas não os vejo, por isso aqui está uma fácil:

um código que valida um código postal dos EUA Válido. Eu sei que existem bases de dados de código postal por aí, mas ainda existem usos, como páginas web, validação rápida, e também o fato de que os códigos zip continuam sendo emitidos, então você pode querer usar validação fraca.

Escrevi um pouco sobre códigos postais num projecto paralelo no meu. wiki / blog:

Https://benc.fogbugz.com/default.asp?W24

Há também um novo e estranho tipo de código postal.

Https://benc.fogbugz.com/default.asp?W42

Eu posso fazer o código javascript, mas seria interessante ver quantas línguas podemos chegar aqui.

Author: benc , 2008-10-02

13 answers

Literal Regex De Javascript:

Código Postal dos EUA: /(^\d{5}$)|(^\d{5}-\d{4}$)/

var isValidZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/.test("90210");

Alguns países usam Códigos Postais, o que falharia com este padrão.

 54
Author: keparo, 2015-08-27 22:51:08
function isValidUSZip(sZip) {
   return /^\d{5}(-\d{4})?$/.test(sZip);
}
 26
Author: Andrey Fedorov, 2009-02-13 15:11:06

Aqui está uma função JavaScript que valida um código postal/ZIP baseado em um código de país. Permite uma formatação um pouco liberal. Você poderia adicionar casos para outros países também. Note que o caso padrão permite códigos postais vazios, uma vez que nem todos os países os usam.

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);
}
Para tua informação, o segundo link relativo aos códigos postais da vaidade parece ter sido uma piada do Dia Das mentiras.
 6
Author: Mike Henry, 2008-10-02 04:29:31

Se está a fazer para o Canadá lembre-se que nem todas as letras são válidas

Estas letras são inválidas: D, F, I, O, Q, ou U E as letras W E Z não são usadas como primeira letra. Também algumas pessoas usam um espaço opcional após o terceiro personagem.

Aqui está uma expressão regular para o Código postal canadiano:

new RegExp(/^[abceghjklmnprstvxy][0-9][abceghjklmnprstvwxyz]\s?[0-9][abceghjklmnprstvwxyz][0-9]$/i)

O último torna-o insensível à case.

 5
Author: Samer, 2011-09-16 14:37:24

Aqui está um do ficheiro do jQuery Validate plugin additional-methods.js...

jQuery.validator.addMethod("zipUS", function(value, element) {
    return /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(value);
}, "Please specify a valid US zip code.");

EDIT : dado que o código acima faz parte do 'plugin' de validação do jQuery, depende do método .addMethod().

Remova a dependência dos 'plugins' e torne-a mais genérica....

function checkZip(value) {
    return (/(^\d{5}$)|(^\d{5}-\d{4}$)/).test(value);
};

Utilização do exemplo: http://jsfiddle.net/5PNcJ/

 3
Author: Sparky, 2013-02-20 19:57:27

Esta é uma boa solução JavaScript para o problema de validação que tem:

/\b\d{5}-\d{4}\b/
 1
Author: TorchLakeDave, 2011-10-31 05:51:02
À medida que trabalho na indústria do correio há 17 anos, vejo todos os tipos de entrada de dados nesta área, acho interessante quantas pessoas não sabem o seu endereço como é definido pela USPS. Ainda vejo endereços como este:

XYZ College
Departamento de TI
City, St ZIP

A pior parte é o correio 99% do tempo é entregue, o outro 1%, bem que é devolvido para um endereço incompleto como deveria.

Num post anterior, alguém mencionou o USPS CASS., esse software não é livre.

Regexar um teste de código postal é bom, estou a usar expressões para determinar se nós, CA, UK, ou AU Código Postal. Eu vi expressões para o Japão e outros que só adicionam desafios na escolha do país correto a que um zip pertence.

De longe, a melhor resposta é usar listas Drop Down para estado e País. Em seguida, use tabelas para validar ainda mais, se necessário. Só para lhe dar uma ideia, existem 84052 combinações aceitáveis de US City St Zip em apenas os primeiros 5 algarismo. Existem 249 países válidos de acordo com a ISO e existem 65 Estados/territórios norte-americanos.

Há Militares, apenas caixas de correio, e classes únicas de código postal também. O beijo aplica-se aqui.

 1
Author: user2832940, 2013-10-20 19:47:59

Sugiro que dê uma vista de olhos nas APIs de informações de endereços da USPS. Você pode validar um zip e obter endereços padrão formatados. https://www.usps.com/business/web-tools-apis/address-information.htm

 1
Author: Carl, 2014-08-22 21:10:48

Uma maneira de verificar o código postal válido do Canadá é -

function isValidCAPostal(pcVal) {
   return ^[A-Za-z][0-9][A-Za-z]\s{0,1}[0-9][A-Za-z][0-9]$/.test(pcVal);
}
Espero que isto ajude alguém.
 0
Author: Irfan, 2013-03-09 10:37:30

Para promover a minha resposta, a UPS e a FedEx não podem entregar a uma Caixa postal não sem usar a USPS como manipuladora final. A maioria do software de transporte lá fora não permitirá um zip PO Box para seus serviços padrão. Exemplos de zips de caixa de PO são 00604-RAMEY, PR e 06141-HARTFORD, CT.

A necessidade de validar códigos postais pode ser uma questão de até onde ir, Qual é o orçamento, Qual é a linha de tempo.

Como qualquer coisa com expressões teste, teste, teste e teste Outra vez. Eu tinha uma expressão para a validação do estado e descobri que YORK passou quando deveria falhar. A única vez em milhares alguém entrou em Nova York, Nova York 10279, ugh.

[[1] também tenha em mente, USPS não gosta de pontuação como N. Market St. e também tem abreviaturas aceitáveis muito específicas para coisas como Lane, Place, North, Corporation e afins.
 0
Author: user2832940, 2013-10-20 20:01:54

O Drupal 7 também tem uma solução fácil aqui, que lhe permitirá validar contra vários países.

Https://drupal.org/project/postal_code_validation

Você vai precisar deste módulo também
https://drupal.org/project/postal_code

Testa-o em http://simplytest.me/

 0
Author: pal4life, 2014-05-27 14:51:00
Está a referir-se à validação de endereços? Como a resposta anterior de Mike, você precisa atender para o othe 95%.

O que pode fazer é quando o utilizador seleccionar o seu país, activar a validação. Validação de endereços e validação de zipcode são duas coisas diferentes. Validar o ZIP é apenas certificar-se do seu inteiro. A validação do endereço é validar o endereço real para a exatidão, de preferência para o envio por correio.

 -1
Author: Saif Khan, 2008-10-02 02:30:22

Para permitir que um Utilizador introduza um código postal canadiano com letras minúsculas também, a expressão regular teria de ser assim:

/^([a-zA-Z][0-9][a-zA-Z])\s*([0-9][a-zA-Z][0-9])$/

 -1
Author: Matt Bertulli, 2009-02-13 15:05:04