123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import assertString from './util/assertString'; // common patterns
- var threeDigit = /^\d{3}$/;
- var fourDigit = /^\d{4}$/;
- var fiveDigit = /^\d{5}$/;
- var sixDigit = /^\d{6}$/;
- var patterns = {
- AD: /^AD\d{3}$/,
- AT: fourDigit,
- AU: fourDigit,
- AZ: /^AZ\d{4}$/,
- BE: fourDigit,
- BG: fourDigit,
- BR: /^\d{5}-\d{3}$/,
- BY: /2[1-4]{1}\d{4}$/,
- CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,
- CH: fourDigit,
- CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/,
- CZ: /^\d{3}\s?\d{2}$/,
- DE: fiveDigit,
- DK: fourDigit,
- DO: fiveDigit,
- DZ: fiveDigit,
- EE: fiveDigit,
- ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/,
- FI: fiveDigit,
- FR: /^\d{2}\s?\d{3}$/,
- GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,
- GR: /^\d{3}\s?\d{2}$/,
- HR: /^([1-5]\d{4}$)/,
- HT: /^HT\d{4}$/,
- HU: fourDigit,
- ID: fiveDigit,
- IE: /^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i,
- IL: /^(\d{5}|\d{7})$/,
- IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,
- IR: /\b(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}\b/,
- IS: threeDigit,
- IT: fiveDigit,
- JP: /^\d{3}\-\d{4}$/,
- KE: fiveDigit,
- KR: /^(\d{5}|\d{6})$/,
- LI: /^(948[5-9]|949[0-7])$/,
- LT: /^LT\-\d{5}$/,
- LU: fourDigit,
- LV: /^LV\-\d{4}$/,
- LK: fiveDigit,
- MX: fiveDigit,
- MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/,
- MY: fiveDigit,
- NL: /^\d{4}\s?[a-z]{2}$/i,
- NO: fourDigit,
- NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i,
- NZ: fourDigit,
- PL: /^\d{2}\-\d{3}$/,
- PR: /^00[679]\d{2}([ -]\d{4})?$/,
- PT: /^\d{4}\-\d{3}?$/,
- RO: sixDigit,
- RU: sixDigit,
- SA: fiveDigit,
- SE: /^[1-9]\d{2}\s?\d{2}$/,
- SG: sixDigit,
- SI: fourDigit,
- SK: /^\d{3}\s?\d{2}$/,
- TH: fiveDigit,
- TN: fourDigit,
- TW: /^\d{3}(\d{2})?$/,
- UA: fiveDigit,
- US: /^\d{5}(-\d{4})?$/,
- ZA: fourDigit,
- ZM: fiveDigit
- };
- export var locales = Object.keys(patterns);
- export default function isPostalCode(str, locale) {
- assertString(str);
- if (locale in patterns) {
- return patterns[locale].test(str);
- } else if (locale === 'any') {
- for (var key in patterns) {
- // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
- // istanbul ignore else
- if (patterns.hasOwnProperty(key)) {
- var pattern = patterns[key];
- if (pattern.test(str)) {
- return true;
- }
- }
- }
- return false;
- }
- throw new Error("Invalid locale '".concat(locale, "'"));
- }
|