Skip to content

Cimpress-MCP/postal-codes-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

588af79 · Oct 13, 2020

History

94 Commits
Sep 24, 2020
Aug 12, 2020
Sep 24, 2020
Oct 13, 2020
Aug 12, 2020
Oct 10, 2019
Mar 13, 2016
Aug 12, 2020
Aug 30, 2019
Feb 14, 2020
Mar 7, 2016
Oct 3, 2019
Jan 20, 2018
Mar 3, 2020
Jun 26, 2020
Sep 24, 2020
Sep 24, 2020
Sep 23, 2019
Jan 20, 2018

Repository files navigation

Build Status Coverage Status npm version

postal-codes.js

Provides javascript postal code validation for all countries. Supports both Node.js and web browser usage.

Validation rules

  1. Characters " " (space) and "-" (dash) are removed from the input string.
  2. Input is case insensitive.
  3. Supports both ISO 3166-1 alpha-2 and ISO 3166-1 alpha-3 country codes.
  4. Validates optional n-digit extention seperated by a space or hyphen.

Usage

const postalCodes = require('postal-codes-js');
const countryCode = 'CH'; // ISO 3166-1 alpha-2 or alpha-3 country code as string.
const postalCode = '8008'; // Postal code as string or number.
postalCodes.validate(countryCode, postalCode); // Returns 'true' if valid, error message as string otherwise.

// All the calls below returns true
postalCodes.validate('bg', '1003');
postalCodes.validate('gb', 'EC1A 1BB');
postalCodes.validate('GB', 'EC1A 1BB');
postalCodes.validate('GBR', 'EC1A 1BB');
postalCodes.validate('gb', 'EC1A1BB');
postalCodes.validate('gb', 'EC1A-1BB');
postalCodes.validate('tr', '33150');
postalCodes.validate('TR', '33150');
postalCodes.validate('TUR', '33150');
postalCodes.validate('us', '22313');
postalCodes.validate('USA', '91746-2302');

// All the calls below return a string
postalCodes.validate('UK', 'EC1A 1BB');
 > Unknown alpha2/alpha3 country code: UK

postalCodes.validate('PL', '9999');
 > Postal code 9999 is not valid for country PL

postalCodes.validate('CH');
 > Missing postal code.

Testing with mocha

$ npm test
$ npm run coverage

Contribution

Contributions are more than welcome, just fork the repo and create a pull-request ;)

Contact

[email protected]