Repository URL to install this package:
Version:
0.9.6 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// @todo @fixme - export name issue
// import { test } from 'chain-able-boost'
const exotic_1 = require("exotic");
const __match_1 = require("./__match");
const matchUnitedKingdomPostCode = /^[A-Z]{1,2}[0-9RCHNQ][0-9A-Z]?\s?[0-9][ABD-HJLNP-UW-Z]{2}$|^[A-Z]{2}-?[0-9]{4}$/;
const matchCanadianPostalCode = /^(?!.*[DFIOQU])[A-VXY][0-9][A-Z]\s?[0-9][A-Z][0-9]$/;
const matchUnitedStatesZipCode = /^[0-9]{5}(?:-[0-9A-Za-z\d-]{4})?$/;
const matchZipCodeLoosest = /^[0-9a-zA-Z]+$/;
const isCanadian = __match_1.test(matchCanadianPostalCode);
const isUnitedStates = __match_1.test(matchUnitedStatesZipCode);
const isUnitedKingdom = __match_1.test(matchUnitedKingdomPostCode);
const _isZipCodeLoosest = __match_1.test(matchZipCodeLoosest);
// && String(x) !== '000'
// isValidLength(x, 2)
const isZipCodeLoosest = x => x.length > 2 && _isZipCodeLoosest(x);
/**
* @see https://github.com/chriso/validator.js/blob/master/src/lib/isPostalCode.js
* @see http://formvalidation.io/validators/zipCode/
* @see https://stackoverflow.com/questions/578406/what-is-the-ultimate-postal-code-and-zip-regex
* @note - the conditional branching is intentional
* @see https://gist.github.com/aretecode/9b1765a897554b82da96591372d3c149
*/
function isValidZipCode(zipcode) {
if (exotic_1.isString(zipcode) === false) {
return false;
}
else if (isCanadian(zipcode)) {
return true;
}
else if (isUnitedStates(zipcode)) {
return true;
}
else if (isUnitedKingdom(zipcode)) {
return true;
}
else if (isZipCodeLoosest(zipcode)) {
return true;
}
else {
return false;
}
}
exports.isValidZipCode = isValidZipCode;
exports.default = isValidZipCode;
//# sourceMappingURL=isValidZipCode.js.map