ZIP Code (US Postal Code) validatie

Ik dacht dat mensen samen aan kleine codeprojecten zouden werken, maar ik zie ze niet, dus hier is een makkelijke:

Code die een geldige Amerikaanse postcode valideert. Ik weet dat er postcodedatabases zijn, maar er zijn nog steeds toepassingen, zoals webpagina’s, snelle validatie en ook het feit dat postcodes steeds opnieuw worden uitgegeven, dus misschien wilt u zwakke validatie gebruiken.

Ik schreef een klein stukje over postcodes in een zijproject op mijn wiki/blog:

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

Er is ook een nieuw, vreemd type postcode.

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

Ik kan de javascript-code doen, maar het zou interessant zijn om te zien hoeveel talen we hier kunnen krijgen.


Antwoord 1, autoriteit 100%

Javascript Regex Letterlijk:

Amerikaanse postcodes: /(^\d{5}$)|(^\d{5}-\d{4}$)/

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

Sommige landen gebruiken Postcodes, wat niet zou voldoen aan dit patroon.


Antwoord 2, autoriteit 48%

function isValidUSZip(sZip) {
   return /^\d{5}(-\d{4})?$/.test(sZip);
}

Antwoord 3, autoriteit 11%

Hier is een JavaScript-functie die een postcode valideert op basis van een landcode. Het staat enigszins liberale opmaak toe. U kunt ook zaken voor andere landen toevoegen. Houd er rekening mee dat in het standaard geval lege postcodes zijn toegestaan, aangezien niet alle landen ze gebruiken.

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);
}

Ter info De tweede link die verwijst naar ijdele postcodes lijkt een 1 aprilgrap te zijn geweest.


Antwoord 4, autoriteit 9%

Als je voor Canada doet, onthoud dan dat niet alle letters geldig zijn

Deze letters zijn ongeldig: D, F, I, O, Q of U
En de letters W en Z worden niet als eerste letter gebruikt.
Sommige mensen gebruiken ook een optionele spatie na het derde teken.

Hier is een reguliere expressie voor de Canadese postcode:

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

De laatste imaakt het hoofdletterongevoelig.


Antwoord 5, autoriteit 6%

Hier is er een uit het bestand additional-methods.jsvan jQuery Validate plugin…

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

EDIT: aangezien de bovenstaande code deel uitmaakt van de jQuery Validate-plug-in, is deze afhankelijk van de .addMethod()-methode.

Verwijder de afhankelijkheid van plug-ins en maak deze algemener….

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

Voorbeeld van gebruik: http://jsfiddle.net/5PNcJ/


Antwoord 6, autoriteit 2%

Dit is een goede JavaScript-oplossing voor het validatieprobleem dat u heeft:

/\b\d{5}-\d{4}\b/

Antwoord 7, autoriteit 2%

Omdat ik al 17 jaar in de mailingindustrie werk, heb ik allerlei soorten gegevensinvoer op dit gebied gezien. Ik vind het interessant hoeveel mensen hun adres niet weten zoals het is gedefinieerd door de USPS. Ik zie nog steeds adressen zoals deze:

XYZ College
IT-afdeling
Stad, St. ZIP

Het ergste is dat de e-mail 99% van de tijd wordt bezorgd, de andere 1%, nou ja, die wordt teruggestuurd voor een onvolledig adres zoals het hoort.

In een eerder bericht noemde iemand USPS CASS, die software is niet gratis.

Het is leuk om een postcodetester te regexen. Ik gebruik uitdrukkingen om te bepalen of de postcode van de VS, CA, VK of AU is. Ik heb uitdrukkingen gezien voor Japan en anderen die alleen maar uitdagingen toevoegen bij het kiezen van het juiste land waartoe een zip behoort.

Verreweg het beste antwoord is het gebruik van vervolgkeuzelijsten voor staat en land. Gebruik vervolgens tabellen om zo nodig verder te valideren. Om u een idee te geven, er zijn 84052 acceptabele US City St Zip-combinaties op alleen de eerste 5 cijfers. Er zijn 249 geldige landen volgens de ISO en er zijn 65 Amerikaanse staat/territoria.

Er zijn ook militaire klassen, alleen postbussen en unieke postcodeklassen. KISS is hier van toepassing.


Antwoord 8, autoriteit 2%

Stel je voor om de USPS Address Information API’s te bekijken. U kunt een zip valideren en standaard opgemaakte adressen verkrijgen. https://www.usps.com/business/web-tools -apis/address-information.htm


Antwoord 9

Een manier om een geldige Canadese postcode te controleren is-

function isValidCAPostal(pcVal) {
   return ^[A-Za-z][0-9][A-Za-z]\s{0,1}[0-9][A-Za-z][0-9]$/.test(pcVal);
}

Ik hoop dat dit iemand zal helpen.


Antwoord 10

Om mijn antwoord verder te helpen, kunnen UPS en FedEx niet leveren aan een postbus zonder de USPS als laatste afhandelaar te gebruiken. De meeste verzendsoftware die er is, staat geen postbus-zip toe voor hun standaardservices. Voorbeelden van postbusritsen zijn 00604 – RAMEY, PR en 06141 – HARTFORD, CT.

De hele behoefte om postcodes te valideren kan een kwestie zijn van hoe ver ga je, wat is het budget, wat is de tijdlijn.

Zoals alles met de uitdrukkingen test, test, test en test opnieuw. Ik had een uitdrukking voor staatsvalidatie en ontdekte dat YORK geslaagd was terwijl het zou moeten mislukken. De enige keer in duizenden kwam iemand New York binnen, New York 10279, ugh.

Houd er rekening mee dat USPS niet van interpunctie zoals N. Market St. houdt en ook zeer specifieke acceptabele afkortingen heeft voor zaken als Lane, Place, North, Corporation en dergelijke.


Antwoord 11

Drupal 7 heeft hier ook een makkelijke oplossing, hiermee kun je valideren tegen meerdere landen.

https://drupal.org/project/postal_code_validation

Je hebt deze module ook nodig
https://drupal.org/project/postal_code

Test het in http://simplytest.me/


Antwoord 12

Verwijst u naar adresvalidatie? Net als het vorige antwoord door Mike moet u tegemoet zijn op de OTHE 95%.

Wat u kunt doen is wanneer de gebruiker zijn land selecteert, vervolgens validatie inschakelen. Adresvalidatie en postcodevalidatie zijn 2 verschillende dingen. Valideren van de ZIP is gewoon ervoor zorgen dat het integer is. Adresvalidatie is het valideren van het eigenlijke adres voor nauwkeurigheid, bij voorkeur voor mailing.


Antwoord 13

Om een gebruiker in staat te stellen een Canadese postcode met kleine letters ook in te voeren, zou de regex er als volgt uit moeten zien:

/ ^ ([A-ZA-Z] [0-9] [A-ZA-Z]) \ s * ([0-9] [A-ZA-Z] [0-9]) $ /

Other episodes