From 3b7530752301ae4596711d22a335e433fcc93efb Mon Sep 17 00:00:00 2001 From: Richard Leurs <7275740+EarthlingRich@users.noreply.github.com> Date: Sat, 16 May 2020 16:04:20 +0200 Subject: [PATCH] Add function to check if country code is from a SEPA country. --- dist/ibantools.d.ts | 16 +- dist/ibantools.js | 549 ++++++++++++++++++++++------------------- package.json | 3 +- src/IBANTools.ts | 550 +++++++++++++++++++++++------------------- test/IBANToolsTest.ts | 38 ++- 5 files changed, 639 insertions(+), 517 deletions(-) diff --git a/dist/ibantools.d.ts b/dist/ibantools.d.ts index fdcf717..a9aeb8d 100644 --- a/dist/ibantools.d.ts +++ b/dist/ibantools.d.ts @@ -30,6 +30,19 @@ export declare function isValidIBAN(iban: string): boolean; * @return {boolean} valid */ export declare function isValidBBAN(bban: string, countryCode: string): boolean; +/** + * Validate if country code is from a SEPA country + * @example + * // returns true + * ibantools.isSEPACountry("NL"); + * @example + * // returns false + * ibantools.isSEPACountry("PK"); + * @alias module:ibantools.isSEPACountry + * @param {string} countryCode Country code + * @return {boolean} valid + */ +export declare function isSEPACountry(countryCode: string): boolean; /** * Interface for ComposeIBAN parameteres */ @@ -115,7 +128,7 @@ export declare function friendlyFormatIBAN(iban: string, separator?: string): st * $("input#iban").attr("pattern", $(this).val() + "[0-9]{2}" + country.bban_regexp.slice(1).replace("$","")); * }); * @alias module:ibantools.getCountrySpecifications - * @return {CountryMap} Object [countryCode: string]CountrySpec -> {chars: :number, bban_regexp: string, IBANRegistry: boolean} + * @return {CountryMap} Object [countryCode: string]CountrySpec -> {chars: :number, bban_regexp: string, IBANRegistry: boolean, SEPA: boolean} */ export declare function getCountrySpecifications(): CountryMap; /** @@ -165,6 +178,7 @@ export interface CountrySpec { chars: number; bban_regexp: string; IBANRegistry: boolean; + SEPA: boolean; } /** * Interface for Map of Country Specifications diff --git a/dist/ibantools.js b/dist/ibantools.js index 03e34b2..ba29ea8 100644 --- a/dist/ibantools.js +++ b/dist/ibantools.js @@ -69,6 +69,28 @@ define(["require", "exports"], function (require, exports) { return false; } exports.isValidBBAN = isValidBBAN; + /** + * Validate if country code is from a SEPA country + * @example + * // returns true + * ibantools.isSEPACountry("NL"); + * @example + * // returns false + * ibantools.isSEPACountry("PK"); + * @alias module:ibantools.isSEPACountry + * @param {string} countryCode Country code + * @return {boolean} valid + */ + function isSEPACountry(countryCode) { + if (countryCode !== undefined && countryCode !== null) { + var spec = countrySpecs[countryCode]; + if (spec !== undefined) { + return spec.SEPA; + } + } + return false; + } + exports.isSEPACountry = isSEPACountry; /** * composeIBAN * @example @@ -240,7 +262,7 @@ define(["require", "exports"], function (require, exports) { * $("input#iban").attr("pattern", $(this).val() + "[0-9]{2}" + country.bban_regexp.slice(1).replace("$","")); * }); * @alias module:ibantools.getCountrySpecifications - * @return {CountryMap} Object [countryCode: string]CountrySpec -> {chars: :number, bban_regexp: string, IBANRegistry: boolean} + * @return {CountryMap} Object [countryCode: string]CountrySpec -> {chars: :number, bban_regexp: string, IBANRegistry: boolean, SEPA: boolean} */ function getCountrySpecifications() { return countrySpecs; @@ -298,355 +320,380 @@ define(["require", "exports"], function (require, exports) { exports.extractBIC = extractBIC; // Country specifications var countrySpecs = { - AD: { chars: 24, bban_regexp: "^[0-9]{8}[A-Z0-9]{12}$", IBANRegistry: true }, - AE: { chars: 23, bban_regexp: "^[0-9]{3}[0-9]{16}$", IBANRegistry: true }, - AF: { chars: null, bban_regexp: null, IBANRegistry: false }, - AG: { chars: null, bban_regexp: null, IBANRegistry: false }, - AI: { chars: null, bban_regexp: null, IBANRegistry: false }, - AL: { chars: 28, bban_regexp: "^[0-9]{8}[A-Z0-9]{16}$", IBANRegistry: true }, - AM: { chars: null, bban_regexp: null, IBANRegistry: false }, - AO: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: false }, - AQ: { chars: null, bban_regexp: null, IBANRegistry: false }, - AR: { chars: null, bban_regexp: null, IBANRegistry: false }, - AS: { chars: null, bban_regexp: null, IBANRegistry: false }, - AT: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - AU: { chars: null, bban_regexp: null, IBANRegistry: false }, - AW: { chars: null, bban_regexp: null, IBANRegistry: false }, - AX: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, - AZ: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true }, - BA: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - BB: { chars: null, bban_regexp: null, IBANRegistry: false }, - BD: { chars: null, bban_regexp: null, IBANRegistry: false }, - BE: { chars: 16, bban_regexp: "^[0-9]{12}$", IBANRegistry: true }, - BF: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, + AD: { chars: 24, bban_regexp: "^[0-9]{8}[A-Z0-9]{12}$", IBANRegistry: true, SEPA: false }, + AE: { chars: 23, bban_regexp: "^[0-9]{3}[0-9]{16}$", IBANRegistry: true, SEPA: false }, + AF: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AI: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AL: { chars: 28, bban_regexp: "^[0-9]{8}[A-Z0-9]{16}$", IBANRegistry: true, SEPA: false }, + AM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AO: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: false, SEPA: false }, + AQ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AT: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: true }, + AU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AX: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: false }, + AZ: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true, SEPA: false }, + BA: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: false }, + BB: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BD: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BE: { chars: 16, bban_regexp: "^[0-9]{12}$", IBANRegistry: true, SEPA: true }, + BF: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, BG: { chars: 22, bban_regexp: "^[A-Z]{4}[0-9]{6}[A-Z0-9]{8}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, - BH: { chars: 22, bban_regexp: "^[A-Z]{4}[A-Z0-9]{14}$", IBANRegistry: true }, - BI: { chars: 16, bban_regexp: "^[0-9]{12}$", IBANRegistry: false }, - BJ: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false }, + BH: { chars: 22, bban_regexp: "^[A-Z]{4}[A-Z0-9]{14}$", IBANRegistry: true, SEPA: false }, + BI: { chars: 16, bban_regexp: "^[0-9]{12}$", IBANRegistry: false, SEPA: false }, + BJ: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false, SEPA: false }, BL: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - BM: { chars: null, bban_regexp: null, IBANRegistry: false }, - BN: { chars: null, bban_regexp: null, IBANRegistry: false }, - BO: { chars: null, bban_regexp: null, IBANRegistry: false }, - BQ: { chars: null, bban_regexp: null, IBANRegistry: false }, + BM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BQ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, BR: { chars: 29, bban_regexp: "^[0-9]{23}[A-Z]{1}[A-Z0-9]{1}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - BS: { chars: null, bban_regexp: null, IBANRegistry: false }, - BT: { chars: null, bban_regexp: null, IBANRegistry: false }, - BV: { chars: null, bban_regexp: null, IBANRegistry: false }, - BW: { chars: null, bban_regexp: null, IBANRegistry: false }, + BS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BT: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BV: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, BY: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{4}[A-Z0-9]{16}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - BZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - CA: { chars: null, bban_regexp: null, IBANRegistry: false }, - CC: { chars: null, bban_regexp: null, IBANRegistry: false }, - CD: { chars: null, bban_regexp: null, IBANRegistry: false }, - CF: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - CG: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - CH: { chars: 21, bban_regexp: "^[0-9]{5}[A-Z0-9]{12}$", IBANRegistry: true }, - CI: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false }, - CK: { chars: null, bban_regexp: null, IBANRegistry: false }, - CL: { chars: null, bban_regexp: null, IBANRegistry: false }, - CM: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - CN: { chars: null, bban_regexp: null, IBANRegistry: false }, - CO: { chars: null, bban_regexp: null, IBANRegistry: false }, - CR: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true }, - CU: { chars: null, bban_regexp: null, IBANRegistry: false }, - CV: { chars: null, bban_regexp: null, IBANRegistry: false }, - CW: { chars: null, bban_regexp: null, IBANRegistry: false }, - CX: { chars: null, bban_regexp: null, IBANRegistry: false }, - CY: { chars: 28, bban_regexp: "^[0-9]{8}[A-Z0-9]{16}$", IBANRegistry: true }, - CZ: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - DE: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true }, - DJ: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - DK: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, - DM: { chars: null, bban_regexp: null, IBANRegistry: false }, - DO: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true }, - DZ: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: false }, - EC: { chars: null, bban_regexp: null, IBANRegistry: false }, - EE: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - EG: { chars: 29, bban_regexp: "^[0-9]{25}", IBANRegistry: true }, - EH: { chars: null, bban_regexp: null, IBANRegistry: false }, - ER: { chars: null, bban_regexp: null, IBANRegistry: false }, - ES: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - ET: { chars: null, bban_regexp: null, IBANRegistry: false }, - FI: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, - FJ: { chars: null, bban_regexp: null, IBANRegistry: false }, - FK: { chars: null, bban_regexp: null, IBANRegistry: false }, - FM: { chars: null, bban_regexp: null, IBANRegistry: false }, - FO: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, + BZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CC: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CD: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CF: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + CG: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + CH: { chars: 21, bban_regexp: "^[0-9]{5}[A-Z0-9]{12}$", IBANRegistry: true, SEPA: true }, + CI: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false, SEPA: false }, + CK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CL: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CM: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + CN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CR: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true, SEPA: false }, + CU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CV: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CX: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CY: { chars: 28, bban_regexp: "^[0-9]{8}[A-Z0-9]{16}$", IBANRegistry: true, SEPA: true }, + CZ: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: true }, + DE: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true, SEPA: true }, + DJ: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + DK: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: true }, + DM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + DO: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true, SEPA: false }, + DZ: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: false, SEPA: false }, + EC: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + EE: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: true }, + EG: { chars: 29, bban_regexp: "^[0-9]{25}", IBANRegistry: true, SEPA: false }, + EH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ER: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ES: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: true }, + ET: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + FI: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: true }, + FJ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + FK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + FM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + FO: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: true }, FR: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, - GA: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - GB: { chars: 22, bban_regexp: "^[A-Z]{4}[0-9]{14}$", IBANRegistry: true }, - GD: { chars: null, bban_regexp: null, IBANRegistry: false }, - GE: { chars: 22, bban_regexp: "^[A-Z0-9]{2}[0-9]{16}$", IBANRegistry: true }, + GA: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + GB: { chars: 22, bban_regexp: "^[A-Z]{4}[0-9]{14}$", IBANRegistry: true, SEPA: true }, + GD: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GE: { chars: 22, bban_regexp: "^[A-Z0-9]{2}[0-9]{16}$", IBANRegistry: true, SEPA: false }, GF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - GG: { chars: null, bban_regexp: null, IBANRegistry: false }, - GH: { chars: null, bban_regexp: null, IBANRegistry: false }, - GI: { chars: 23, bban_regexp: "^[A-Z]{4}[A-Z0-9]{15}$", IBANRegistry: true }, - GL: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, - GM: { chars: null, bban_regexp: null, IBANRegistry: false }, - GN: { chars: null, bban_regexp: null, IBANRegistry: false }, + GG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GI: { chars: 23, bban_regexp: "^[A-Z]{4}[A-Z0-9]{15}$", IBANRegistry: true, SEPA: true }, + GL: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: true }, + GM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, GP: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - GQ: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - GR: { chars: 27, bban_regexp: "^[0-9]{7}[A-Z0-9]{16}$", IBANRegistry: true }, - GS: { chars: null, bban_regexp: null, IBANRegistry: false }, - GT: { chars: 28, bban_regexp: "^[A-Z0-9]{24}$", IBANRegistry: true }, - GU: { chars: null, bban_regexp: null, IBANRegistry: false }, - GW: { chars: 25, bban_regexp: "^[A-Z]{2}[0-9]{19}$", IBANRegistry: false }, - GY: { chars: null, bban_regexp: null, IBANRegistry: false }, - HK: { chars: null, bban_regexp: null, IBANRegistry: false }, - HM: { chars: null, bban_regexp: null, IBANRegistry: false }, - HN: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: false }, - HR: { chars: 21, bban_regexp: "^[0-9]{17}$", IBANRegistry: true }, - HT: { chars: null, bban_regexp: null, IBANRegistry: false }, - HU: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: true }, - ID: { chars: null, bban_regexp: null, IBANRegistry: false }, - IE: { chars: 22, bban_regexp: "^[A-Z0-9]{4}[0-9]{14}$", IBANRegistry: true }, - IL: { chars: 23, bban_regexp: "^[0-9]{19}$", IBANRegistry: true }, - IM: { chars: null, bban_regexp: null, IBANRegistry: false }, - IN: { chars: null, bban_regexp: null, IBANRegistry: false }, - IO: { chars: null, bban_regexp: null, IBANRegistry: false }, - IQ: { chars: 23, bban_regexp: "^[A-Z]{4}[0-9]{15}$", IBANRegistry: true }, - IR: { chars: 26, bban_regexp: "^[0-9]{22}$", IBANRegistry: false }, - IS: { chars: 26, bban_regexp: "^[0-9]{22}$", IBANRegistry: true }, + GQ: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + GR: { chars: 27, bban_regexp: "^[0-9]{7}[A-Z0-9]{16}$", IBANRegistry: true, SEPA: true }, + GS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GT: { chars: 28, bban_regexp: "^[A-Z0-9]{24}$", IBANRegistry: true, SEPA: false }, + GU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GW: { chars: 25, bban_regexp: "^[A-Z]{2}[0-9]{19}$", IBANRegistry: false, SEPA: false }, + GY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + HK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + HM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + HN: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: false, SEPA: false }, + HR: { chars: 21, bban_regexp: "^[0-9]{17}$", IBANRegistry: true, SEPA: true }, + HT: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + HU: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: true, SEPA: true }, + ID: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + IE: { chars: 22, bban_regexp: "^[A-Z0-9]{4}[0-9]{14}$", IBANRegistry: true, SEPA: true }, + IL: { chars: 23, bban_regexp: "^[0-9]{19}$", IBANRegistry: true, SEPA: false }, + IM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + IN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + IO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + IQ: { chars: 23, bban_regexp: "^[A-Z]{4}[0-9]{15}$", IBANRegistry: true, SEPA: false }, + IR: { chars: 26, bban_regexp: "^[0-9]{22}$", IBANRegistry: false, SEPA: false }, + IS: { chars: 26, bban_regexp: "^[0-9]{22}$", IBANRegistry: true, SEPA: true }, IT: { chars: 27, bban_regexp: "^[A-Z]{1}[0-9]{10}[A-Z0-9]{12}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, - JE: { chars: null, bban_regexp: null, IBANRegistry: false }, - JM: { chars: null, bban_regexp: null, IBANRegistry: false }, + JE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + JM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, JO: { chars: 30, bban_regexp: "^[A-Z]{4}[0-9]{4}[A-Z0-9]{18}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - JP: { chars: null, bban_regexp: null, IBANRegistry: false }, - KE: { chars: null, bban_regexp: null, IBANRegistry: false }, - KG: { chars: null, bban_regexp: null, IBANRegistry: false }, - KH: { chars: null, bban_regexp: null, IBANRegistry: false }, - KI: { chars: null, bban_regexp: null, IBANRegistry: false }, - KM: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - KN: { chars: null, bban_regexp: null, IBANRegistry: false }, - KP: { chars: null, bban_regexp: null, IBANRegistry: false }, - KR: { chars: null, bban_regexp: null, IBANRegistry: false }, - KW: { chars: 30, bban_regexp: "^[A-Z]{4}[A-Z0-9]{22}$", IBANRegistry: true }, - KY: { chars: null, bban_regexp: null, IBANRegistry: false }, - KZ: { chars: 20, bban_regexp: "^[0-9]{3}[A-Z0-9]{13}$", IBANRegistry: true }, - LA: { chars: null, bban_regexp: null, IBANRegistry: false }, - LB: { chars: 28, bban_regexp: "^[0-9]{4}[A-Z0-9]{20}$", IBANRegistry: true }, - LC: { chars: 32, bban_regexp: "^[A-Z]{4}[A-Z0-9]{24}$", IBANRegistry: true }, - LI: { chars: 21, bban_regexp: "^[0-9]{5}[A-Z0-9]{12}$", IBANRegistry: true }, - LK: { chars: null, bban_regexp: null, IBANRegistry: false }, - LR: { chars: null, bban_regexp: null, IBANRegistry: false }, - LS: { chars: null, bban_regexp: null, IBANRegistry: false }, - LT: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - LU: { chars: 20, bban_regexp: "^[0-9]{3}[A-Z0-9]{13}$", IBANRegistry: true }, - LV: { chars: 21, bban_regexp: "^[A-Z]{4}[A-Z0-9]{13}$", IBANRegistry: true }, - LY: { chars: null, bban_regexp: null, IBANRegistry: false }, - MA: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: false }, + JP: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KI: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KM: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + KN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KP: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KW: { chars: 30, bban_regexp: "^[A-Z]{4}[A-Z0-9]{22}$", IBANRegistry: true, SEPA: false }, + KY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KZ: { chars: 20, bban_regexp: "^[0-9]{3}[A-Z0-9]{13}$", IBANRegistry: true, SEPA: false }, + LA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + LB: { chars: 28, bban_regexp: "^[0-9]{4}[A-Z0-9]{20}$", IBANRegistry: true, SEPA: false }, + LC: { chars: 32, bban_regexp: "^[A-Z]{4}[A-Z0-9]{24}$", IBANRegistry: true, SEPA: false }, + LI: { chars: 21, bban_regexp: "^[0-9]{5}[A-Z0-9]{12}$", IBANRegistry: true, SEPA: true }, + LK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + LR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + LS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + LT: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: true }, + LU: { chars: 20, bban_regexp: "^[0-9]{3}[A-Z0-9]{13}$", IBANRegistry: true, SEPA: true }, + LV: { chars: 21, bban_regexp: "^[A-Z]{4}[A-Z0-9]{13}$", IBANRegistry: true, SEPA: true }, + LY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MA: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: false, SEPA: false }, MC: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, MD: { chars: 24, bban_regexp: "^[A-Z0-9]{2}[A-Z0-9]{18}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - ME: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true }, + ME: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true, SEPA: false }, MF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - MG: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - MH: { chars: null, bban_regexp: null, IBANRegistry: false }, + MG: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + MH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, MK: { chars: 19, bban_regexp: "^[0-9]{3}[A-Z0-9]{10}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - ML: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false }, - MM: { chars: null, bban_regexp: null, IBANRegistry: false }, - MN: { chars: null, bban_regexp: null, IBANRegistry: false }, - MO: { chars: null, bban_regexp: null, IBANRegistry: false }, - MP: { chars: null, bban_regexp: null, IBANRegistry: false }, + ML: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false, SEPA: false }, + MM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MP: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, MQ: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - MR: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: true }, - MS: { chars: null, bban_regexp: null, IBANRegistry: false }, + MR: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: true, SEPA: false }, + MS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, MT: { chars: 31, bban_regexp: "^[A-Z]{4}[0-9]{5}[A-Z0-9]{18}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, MU: { chars: 30, bban_regexp: "^[A-Z]{4}[0-9]{19}[A-Z]{3}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - MV: { chars: null, bban_regexp: null, IBANRegistry: false }, - MW: { chars: null, bban_regexp: null, IBANRegistry: false }, - MX: { chars: null, bban_regexp: null, IBANRegistry: false }, - MY: { chars: null, bban_regexp: null, IBANRegistry: false }, - MZ: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: false }, - NA: { chars: null, bban_regexp: null, IBANRegistry: false }, + MV: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MX: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MZ: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: false, SEPA: false }, + NA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, NC: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - NE: { chars: 28, bban_regexp: "^[A-Z]{2}[0-9]{22}$", IBANRegistry: false }, - NF: { chars: null, bban_regexp: null, IBANRegistry: false }, - NG: { chars: null, bban_regexp: null, IBANRegistry: false }, - NI: { chars: 32, bban_regexp: "^[A-Z]{4}[0-9]{24}$", IBANRegistry: false }, - NL: { chars: 18, bban_regexp: "^[A-Z]{4}[0-9]{10}$", IBANRegistry: true }, - NO: { chars: 15, bban_regexp: "^[0-9]{11}$", IBANRegistry: true }, - NP: { chars: null, bban_regexp: null, IBANRegistry: false }, - NR: { chars: null, bban_regexp: null, IBANRegistry: false }, - NU: { chars: null, bban_regexp: null, IBANRegistry: false }, - NZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - OM: { chars: null, bban_regexp: null, IBANRegistry: false }, - PA: { chars: null, bban_regexp: null, IBANRegistry: false }, - PE: { chars: null, bban_regexp: null, IBANRegistry: false }, + NE: { chars: 28, bban_regexp: "^[A-Z]{2}[0-9]{22}$", IBANRegistry: false, SEPA: false }, + NF: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NI: { chars: 32, bban_regexp: "^[A-Z]{4}[0-9]{24}$", IBANRegistry: false, SEPA: false }, + NL: { chars: 18, bban_regexp: "^[A-Z]{4}[0-9]{10}$", IBANRegistry: true, SEPA: true }, + NO: { chars: 15, bban_regexp: "^[0-9]{11}$", IBANRegistry: true, SEPA: true }, + NP: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + OM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, PF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - PG: { chars: null, bban_regexp: null, IBANRegistry: false }, - PH: { chars: null, bban_regexp: null, IBANRegistry: false }, - PK: { chars: 24, bban_regexp: "^[A-Z0-9]{4}[0-9]{16}$", IBANRegistry: true }, - PL: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: true }, + PG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PK: { chars: 24, bban_regexp: "^[A-Z0-9]{4}[0-9]{16}$", IBANRegistry: true, SEPA: false }, + PL: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: true, SEPA: true }, PM: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - PN: { chars: null, bban_regexp: null, IBANRegistry: false }, - PR: { chars: null, bban_regexp: null, IBANRegistry: false }, - PS: { chars: 29, bban_regexp: "^[A-Z0-9]{4}[0-9]{21}$", IBANRegistry: true }, - PT: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: true }, - PW: { chars: null, bban_regexp: null, IBANRegistry: false }, - PY: { chars: null, bban_regexp: null, IBANRegistry: false }, - QA: { chars: 29, bban_regexp: "^[A-Z]{4}[A-Z0-9]{21}$", IBANRegistry: true }, + PN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PS: { chars: 29, bban_regexp: "^[A-Z0-9]{4}[0-9]{21}$", IBANRegistry: true, SEPA: false }, + PT: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: true, SEPA: true }, + PW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + QA: { chars: 29, bban_regexp: "^[A-Z]{4}[A-Z0-9]{21}$", IBANRegistry: true, SEPA: false }, RE: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - RO: { chars: 24, bban_regexp: "^[A-Z]{4}[A-Z0-9]{16}$", IBANRegistry: true }, - RS: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true }, - RU: { chars: null, bban_regexp: null, IBANRegistry: false }, - RW: { chars: null, bban_regexp: null, IBANRegistry: false }, - SA: { chars: 24, bban_regexp: "^[0-9]{2}[A-Z0-9]{18}$", IBANRegistry: true }, - SB: { chars: null, bban_regexp: null, IBANRegistry: false }, + RO: { chars: 24, bban_regexp: "^[A-Z]{4}[A-Z0-9]{16}$", IBANRegistry: true, SEPA: true }, + RS: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true, SEPA: false }, + RU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + RW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SA: { chars: 24, bban_regexp: "^[0-9]{2}[A-Z0-9]{18}$", IBANRegistry: true, SEPA: false }, + SB: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, SC: { chars: 31, bban_regexp: "^[[A-Z]{4}[]0-9]{20}[A-Z]{3}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - SD: { chars: null, bban_regexp: null, IBANRegistry: false }, - SE: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - SG: { chars: null, bban_regexp: null, IBANRegistry: false }, - SH: { chars: null, bban_regexp: null, IBANRegistry: false }, - SI: { chars: 19, bban_regexp: "^[0-9]{15}$", IBANRegistry: true }, - SJ: { chars: null, bban_regexp: null, IBANRegistry: false }, - SK: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - SL: { chars: null, bban_regexp: null, IBANRegistry: false }, + SD: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SE: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: true }, + SG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SI: { chars: 19, bban_regexp: "^[0-9]{15}$", IBANRegistry: true, SEPA: true }, + SJ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SK: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: true }, + SL: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, SM: { chars: 27, bban_regexp: "^[A-Z]{1}[0-9]{10}[A-Z0-9]{12}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, - SN: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false }, - SO: { chars: null, bban_regexp: null, IBANRegistry: false }, - SR: { chars: null, bban_regexp: null, IBANRegistry: false }, - SS: { chars: null, bban_regexp: null, IBANRegistry: false }, - ST: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: true }, - SV: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true }, - SX: { chars: null, bban_regexp: null, IBANRegistry: false }, - SY: { chars: null, bban_regexp: null, IBANRegistry: false }, - SZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - TC: { chars: null, bban_regexp: null, IBANRegistry: false }, - TD: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, + SN: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false, SEPA: false }, + SO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ST: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: true, SEPA: false }, + SV: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true, SEPA: false }, + SX: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TC: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TD: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, TF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - TG: { chars: 28, bban_regexp: "^[A-Z]{2}[0-9]{22}$", IBANRegistry: false }, - TH: { chars: null, bban_regexp: null, IBANRegistry: false }, - TJ: { chars: null, bban_regexp: null, IBANRegistry: false }, - TK: { chars: null, bban_regexp: null, IBANRegistry: false }, - TL: { chars: 23, bban_regexp: "^[0-9]{19}$", IBANRegistry: true }, - TM: { chars: null, bban_regexp: null, IBANRegistry: false }, - TN: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - TO: { chars: null, bban_regexp: null, IBANRegistry: false }, - TR: { chars: 26, bban_regexp: "^[0-9]{5}[A-Z0-9]{17}$", IBANRegistry: true }, - TT: { chars: null, bban_regexp: null, IBANRegistry: false }, - TV: { chars: null, bban_regexp: null, IBANRegistry: false }, - TW: { chars: null, bban_regexp: null, IBANRegistry: false }, - TZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - UA: { chars: 29, bban_regexp: "^[0-9]{6}[A-Z0-9]{19}$", IBANRegistry: true }, - UG: { chars: null, bban_regexp: null, IBANRegistry: false }, - UM: { chars: null, bban_regexp: null, IBANRegistry: false }, - US: { chars: null, bban_regexp: null, IBANRegistry: false }, - UY: { chars: null, bban_regexp: null, IBANRegistry: false }, - UZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - VA: { chars: 22, bban_regexp: "^[0-9]{18}", IBANRegistry: true }, - VC: { chars: null, bban_regexp: null, IBANRegistry: false }, - VE: { chars: null, bban_regexp: null, IBANRegistry: false }, - VG: { chars: 24, bban_regexp: "^[A-Z0-9]{4}[0-9]{16}$", IBANRegistry: true }, - VI: { chars: null, bban_regexp: null, IBANRegistry: false }, - VN: { chars: null, bban_regexp: null, IBANRegistry: false }, - VU: { chars: null, bban_regexp: null, IBANRegistry: false }, + TG: { chars: 28, bban_regexp: "^[A-Z]{2}[0-9]{22}$", IBANRegistry: false, SEPA: false }, + TH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TJ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TL: { chars: 23, bban_regexp: "^[0-9]{19}$", IBANRegistry: true, SEPA: false }, + TM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TN: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: false }, + TO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TR: { chars: 26, bban_regexp: "^[0-9]{5}[A-Z0-9]{17}$", IBANRegistry: true, SEPA: false }, + TT: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TV: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + UA: { chars: 29, bban_regexp: "^[0-9]{6}[A-Z0-9]{19}$", IBANRegistry: true, SEPA: false }, + UG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + UM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + US: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + UY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + UZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VA: { chars: 22, bban_regexp: "^[0-9]{18}", IBANRegistry: true, SEPA: false }, + VC: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VG: { chars: 24, bban_regexp: "^[A-Z0-9]{4}[0-9]{16}$", IBANRegistry: true, SEPA: false }, + VI: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, WF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - WS: { chars: null, bban_regexp: null, IBANRegistry: false }, - XK: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - YE: { chars: null, bban_regexp: null, IBANRegistry: false }, + WS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + XK: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: false }, + YE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, YT: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - ZA: { chars: null, bban_regexp: null, IBANRegistry: false }, - ZM: { chars: null, bban_regexp: null, IBANRegistry: false }, - ZW: { chars: null, bban_regexp: null, IBANRegistry: false } + ZA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ZM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ZW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false } }; }); diff --git a/package.json b/package.json index 9bc5891..559854d 100755 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "IBAN", "BBAN", "BIC", + "SEPA", "SWIFT", "ISO 3136-1 alpha-2" ], @@ -73,4 +74,4 @@ "tslint": "^6.1", "typescript": "^3.8" } -} +} \ No newline at end of file diff --git a/src/IBANTools.ts b/src/IBANTools.ts index 9084437..69231a1 100755 --- a/src/IBANTools.ts +++ b/src/IBANTools.ts @@ -75,6 +75,28 @@ export function isValidBBAN(bban: string, countryCode: string): boolean { return false; } +/** + * Validate if country code is from a SEPA country + * @example + * // returns true + * ibantools.isSEPACountry("NL"); + * @example + * // returns false + * ibantools.isSEPACountry("PK"); + * @alias module:ibantools.isSEPACountry + * @param {string} countryCode Country code + * @return {boolean} valid + */ +export function isSEPACountry(countryCode: string): boolean { + if (countryCode !== undefined && countryCode !== null) { + const spec = countrySpecs[countryCode]; + if (spec !== undefined) { + return spec.SEPA; + } + } + return false; +} + /** * Interface for ComposeIBAN parameteres */ @@ -265,7 +287,7 @@ function mod9710(iban: string): number { * $("input#iban").attr("pattern", $(this).val() + "[0-9]{2}" + country.bban_regexp.slice(1).replace("$","")); * }); * @alias module:ibantools.getCountrySpecifications - * @return {CountryMap} Object [countryCode: string]CountrySpec -> {chars: :number, bban_regexp: string, IBANRegistry: boolean} + * @return {CountryMap} Object [countryCode: string]CountrySpec -> {chars: :number, bban_regexp: string, IBANRegistry: boolean, SEPA: boolean} */ export function getCountrySpecifications(): CountryMap { return countrySpecs; @@ -339,6 +361,7 @@ export interface CountrySpec { chars: number; bban_regexp: string; IBANRegistry: boolean; // Is country part of official IBAN registry + SEPA: boolean; } /** @@ -350,354 +373,379 @@ export interface CountryMap { // Country specifications const countrySpecs: CountryMap = { - AD: { chars: 24, bban_regexp: "^[0-9]{8}[A-Z0-9]{12}$", IBANRegistry: true }, - AE: { chars: 23, bban_regexp: "^[0-9]{3}[0-9]{16}$", IBANRegistry: true }, - AF: { chars: null, bban_regexp: null, IBANRegistry: false }, - AG: { chars: null, bban_regexp: null, IBANRegistry: false }, - AI: { chars: null, bban_regexp: null, IBANRegistry: false }, - AL: { chars: 28, bban_regexp: "^[0-9]{8}[A-Z0-9]{16}$", IBANRegistry: true }, - AM: { chars: null, bban_regexp: null, IBANRegistry: false }, - AO: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: false }, - AQ: { chars: null, bban_regexp: null, IBANRegistry: false }, - AR: { chars: null, bban_regexp: null, IBANRegistry: false }, - AS: { chars: null, bban_regexp: null, IBANRegistry: false }, - AT: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - AU: { chars: null, bban_regexp: null, IBANRegistry: false }, - AW: { chars: null, bban_regexp: null, IBANRegistry: false }, - AX: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, - AZ: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true }, - BA: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - BB: { chars: null, bban_regexp: null, IBANRegistry: false }, - BD: { chars: null, bban_regexp: null, IBANRegistry: false }, - BE: { chars: 16, bban_regexp: "^[0-9]{12}$", IBANRegistry: true }, - BF: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, + AD: { chars: 24, bban_regexp: "^[0-9]{8}[A-Z0-9]{12}$", IBANRegistry: true, SEPA: false }, + AE: { chars: 23, bban_regexp: "^[0-9]{3}[0-9]{16}$", IBANRegistry: true, SEPA: false }, + AF: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AI: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AL: { chars: 28, bban_regexp: "^[0-9]{8}[A-Z0-9]{16}$", IBANRegistry: true, SEPA: false }, + AM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AO: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: false, SEPA: false }, + AQ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AT: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: true }, + AU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + AX: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: false }, + AZ: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true, SEPA: false }, + BA: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: false }, + BB: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BD: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BE: { chars: 16, bban_regexp: "^[0-9]{12}$", IBANRegistry: true, SEPA: true }, + BF: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, BG: { chars: 22, bban_regexp: "^[A-Z]{4}[0-9]{6}[A-Z0-9]{8}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, - BH: { chars: 22, bban_regexp: "^[A-Z]{4}[A-Z0-9]{14}$", IBANRegistry: true }, - BI: { chars: 16, bban_regexp: "^[0-9]{12}$", IBANRegistry: false }, - BJ: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false }, + BH: { chars: 22, bban_regexp: "^[A-Z]{4}[A-Z0-9]{14}$", IBANRegistry: true, SEPA: false }, + BI: { chars: 16, bban_regexp: "^[0-9]{12}$", IBANRegistry: false, SEPA: false }, + BJ: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false, SEPA: false }, BL: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - BM: { chars: null, bban_regexp: null, IBANRegistry: false }, - BN: { chars: null, bban_regexp: null, IBANRegistry: false }, - BO: { chars: null, bban_regexp: null, IBANRegistry: false }, - BQ: { chars: null, bban_regexp: null, IBANRegistry: false }, + BM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BQ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, BR: { chars: 29, bban_regexp: "^[0-9]{23}[A-Z]{1}[A-Z0-9]{1}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - BS: { chars: null, bban_regexp: null, IBANRegistry: false }, - BT: { chars: null, bban_regexp: null, IBANRegistry: false }, - BV: { chars: null, bban_regexp: null, IBANRegistry: false }, - BW: { chars: null, bban_regexp: null, IBANRegistry: false }, + BS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BT: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BV: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + BW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, BY: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{4}[A-Z0-9]{16}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - BZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - CA: { chars: null, bban_regexp: null, IBANRegistry: false }, - CC: { chars: null, bban_regexp: null, IBANRegistry: false }, - CD: { chars: null, bban_regexp: null, IBANRegistry: false }, - CF: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - CG: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - CH: { chars: 21, bban_regexp: "^[0-9]{5}[A-Z0-9]{12}$", IBANRegistry: true }, - CI: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false }, - CK: { chars: null, bban_regexp: null, IBANRegistry: false }, - CL: { chars: null, bban_regexp: null, IBANRegistry: false }, - CM: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - CN: { chars: null, bban_regexp: null, IBANRegistry: false }, - CO: { chars: null, bban_regexp: null, IBANRegistry: false }, - CR: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true }, - CU: { chars: null, bban_regexp: null, IBANRegistry: false }, - CV: { chars: null, bban_regexp: null, IBANRegistry: false }, - CW: { chars: null, bban_regexp: null, IBANRegistry: false }, - CX: { chars: null, bban_regexp: null, IBANRegistry: false }, - CY: { chars: 28, bban_regexp: "^[0-9]{8}[A-Z0-9]{16}$", IBANRegistry: true }, - CZ: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - DE: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true }, - DJ: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - DK: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, - DM: { chars: null, bban_regexp: null, IBANRegistry: false }, - DO: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true }, - DZ: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: false }, - EC: { chars: null, bban_regexp: null, IBANRegistry: false }, - EE: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - EG: { chars: 29, bban_regexp: "^[0-9]{25}", IBANRegistry: true }, - EH: { chars: null, bban_regexp: null, IBANRegistry: false }, - ER: { chars: null, bban_regexp: null, IBANRegistry: false }, - ES: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - ET: { chars: null, bban_regexp: null, IBANRegistry: false }, - FI: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, - FJ: { chars: null, bban_regexp: null, IBANRegistry: false }, - FK: { chars: null, bban_regexp: null, IBANRegistry: false }, - FM: { chars: null, bban_regexp: null, IBANRegistry: false }, - FO: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, + BZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CC: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CD: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CF: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + CG: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + CH: { chars: 21, bban_regexp: "^[0-9]{5}[A-Z0-9]{12}$", IBANRegistry: true, SEPA: true }, + CI: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false, SEPA: false }, + CK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CL: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CM: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + CN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CR: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true, SEPA: false }, + CU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CV: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CX: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + CY: { chars: 28, bban_regexp: "^[0-9]{8}[A-Z0-9]{16}$", IBANRegistry: true, SEPA: true }, + CZ: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: true }, + DE: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true, SEPA: true }, + DJ: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + DK: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: true }, + DM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + DO: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true, SEPA: false }, + DZ: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: false, SEPA: false }, + EC: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + EE: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: true }, + EG: { chars: 29, bban_regexp: "^[0-9]{25}", IBANRegistry: true, SEPA: false }, + EH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ER: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ES: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: true }, + ET: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + FI: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: true }, + FJ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + FK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + FM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + FO: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: true }, FR: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, - GA: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - GB: { chars: 22, bban_regexp: "^[A-Z]{4}[0-9]{14}$", IBANRegistry: true }, - GD: { chars: null, bban_regexp: null, IBANRegistry: false }, - GE: { chars: 22, bban_regexp: "^[A-Z0-9]{2}[0-9]{16}$", IBANRegistry: true }, + GA: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + GB: { chars: 22, bban_regexp: "^[A-Z]{4}[0-9]{14}$", IBANRegistry: true, SEPA: true }, + GD: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GE: { chars: 22, bban_regexp: "^[A-Z0-9]{2}[0-9]{16}$", IBANRegistry: true, SEPA: false }, GF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - GG: { chars: null, bban_regexp: null, IBANRegistry: false }, - GH: { chars: null, bban_regexp: null, IBANRegistry: false }, - GI: { chars: 23, bban_regexp: "^[A-Z]{4}[A-Z0-9]{15}$", IBANRegistry: true }, - GL: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true }, - GM: { chars: null, bban_regexp: null, IBANRegistry: false }, - GN: { chars: null, bban_regexp: null, IBANRegistry: false }, + GG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GI: { chars: 23, bban_regexp: "^[A-Z]{4}[A-Z0-9]{15}$", IBANRegistry: true, SEPA: true }, + GL: { chars: 18, bban_regexp: "^[0-9]{14}$", IBANRegistry: true, SEPA: true }, + GM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, GP: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - GQ: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - GR: { chars: 27, bban_regexp: "^[0-9]{7}[A-Z0-9]{16}$", IBANRegistry: true }, - GS: { chars: null, bban_regexp: null, IBANRegistry: false }, - GT: { chars: 28, bban_regexp: "^[A-Z0-9]{24}$", IBANRegistry: true }, - GU: { chars: null, bban_regexp: null, IBANRegistry: false }, - GW: { chars: 25, bban_regexp: "^[A-Z]{2}[0-9]{19}$", IBANRegistry: false }, - GY: { chars: null, bban_regexp: null, IBANRegistry: false }, - HK: { chars: null, bban_regexp: null, IBANRegistry: false }, - HM: { chars: null, bban_regexp: null, IBANRegistry: false }, - HN: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: false }, - HR: { chars: 21, bban_regexp: "^[0-9]{17}$", IBANRegistry: true }, - HT: { chars: null, bban_regexp: null, IBANRegistry: false }, - HU: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: true }, - ID: { chars: null, bban_regexp: null, IBANRegistry: false }, - IE: { chars: 22, bban_regexp: "^[A-Z0-9]{4}[0-9]{14}$", IBANRegistry: true }, - IL: { chars: 23, bban_regexp: "^[0-9]{19}$", IBANRegistry: true }, - IM: { chars: null, bban_regexp: null, IBANRegistry: false }, - IN: { chars: null, bban_regexp: null, IBANRegistry: false }, - IO: { chars: null, bban_regexp: null, IBANRegistry: false }, - IQ: { chars: 23, bban_regexp: "^[A-Z]{4}[0-9]{15}$", IBANRegistry: true }, - IR: { chars: 26, bban_regexp: "^[0-9]{22}$", IBANRegistry: false }, - IS: { chars: 26, bban_regexp: "^[0-9]{22}$", IBANRegistry: true }, + GQ: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + GR: { chars: 27, bban_regexp: "^[0-9]{7}[A-Z0-9]{16}$", IBANRegistry: true, SEPA: true }, + GS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GT: { chars: 28, bban_regexp: "^[A-Z0-9]{24}$", IBANRegistry: true, SEPA: false }, + GU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + GW: { chars: 25, bban_regexp: "^[A-Z]{2}[0-9]{19}$", IBANRegistry: false, SEPA: false }, + GY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + HK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + HM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + HN: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: false, SEPA: false }, + HR: { chars: 21, bban_regexp: "^[0-9]{17}$", IBANRegistry: true, SEPA: true }, + HT: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + HU: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: true, SEPA: true }, + ID: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + IE: { chars: 22, bban_regexp: "^[A-Z0-9]{4}[0-9]{14}$", IBANRegistry: true, SEPA: true }, + IL: { chars: 23, bban_regexp: "^[0-9]{19}$", IBANRegistry: true, SEPA: false }, + IM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + IN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + IO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + IQ: { chars: 23, bban_regexp: "^[A-Z]{4}[0-9]{15}$", IBANRegistry: true, SEPA: false }, + IR: { chars: 26, bban_regexp: "^[0-9]{22}$", IBANRegistry: false, SEPA: false }, + IS: { chars: 26, bban_regexp: "^[0-9]{22}$", IBANRegistry: true, SEPA: true }, IT: { chars: 27, bban_regexp: "^[A-Z]{1}[0-9]{10}[A-Z0-9]{12}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, - JE: { chars: null, bban_regexp: null, IBANRegistry: false }, - JM: { chars: null, bban_regexp: null, IBANRegistry: false }, + JE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + JM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, JO: { chars: 30, bban_regexp: "^[A-Z]{4}[0-9]{4}[A-Z0-9]{18}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - JP: { chars: null, bban_regexp: null, IBANRegistry: false }, - KE: { chars: null, bban_regexp: null, IBANRegistry: false }, - KG: { chars: null, bban_regexp: null, IBANRegistry: false }, - KH: { chars: null, bban_regexp: null, IBANRegistry: false }, - KI: { chars: null, bban_regexp: null, IBANRegistry: false }, - KM: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - KN: { chars: null, bban_regexp: null, IBANRegistry: false }, - KP: { chars: null, bban_regexp: null, IBANRegistry: false }, - KR: { chars: null, bban_regexp: null, IBANRegistry: false }, - KW: { chars: 30, bban_regexp: "^[A-Z]{4}[A-Z0-9]{22}$", IBANRegistry: true }, - KY: { chars: null, bban_regexp: null, IBANRegistry: false }, - KZ: { chars: 20, bban_regexp: "^[0-9]{3}[A-Z0-9]{13}$", IBANRegistry: true }, - LA: { chars: null, bban_regexp: null, IBANRegistry: false }, - LB: { chars: 28, bban_regexp: "^[0-9]{4}[A-Z0-9]{20}$", IBANRegistry: true }, - LC: { chars: 32, bban_regexp: "^[A-Z]{4}[A-Z0-9]{24}$", IBANRegistry: true }, - LI: { chars: 21, bban_regexp: "^[0-9]{5}[A-Z0-9]{12}$", IBANRegistry: true }, - LK: { chars: null, bban_regexp: null, IBANRegistry: false }, - LR: { chars: null, bban_regexp: null, IBANRegistry: false }, - LS: { chars: null, bban_regexp: null, IBANRegistry: false }, - LT: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - LU: { chars: 20, bban_regexp: "^[0-9]{3}[A-Z0-9]{13}$", IBANRegistry: true }, - LV: { chars: 21, bban_regexp: "^[A-Z]{4}[A-Z0-9]{13}$", IBANRegistry: true }, - LY: { chars: null, bban_regexp: null, IBANRegistry: false }, - MA: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: false }, + JP: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KI: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KM: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + KN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KP: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KW: { chars: 30, bban_regexp: "^[A-Z]{4}[A-Z0-9]{22}$", IBANRegistry: true, SEPA: false }, + KY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + KZ: { chars: 20, bban_regexp: "^[0-9]{3}[A-Z0-9]{13}$", IBANRegistry: true, SEPA: false }, + LA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + LB: { chars: 28, bban_regexp: "^[0-9]{4}[A-Z0-9]{20}$", IBANRegistry: true, SEPA: false }, + LC: { chars: 32, bban_regexp: "^[A-Z]{4}[A-Z0-9]{24}$", IBANRegistry: true, SEPA: false }, + LI: { chars: 21, bban_regexp: "^[0-9]{5}[A-Z0-9]{12}$", IBANRegistry: true, SEPA: true }, + LK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + LR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + LS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + LT: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: true }, + LU: { chars: 20, bban_regexp: "^[0-9]{3}[A-Z0-9]{13}$", IBANRegistry: true, SEPA: true }, + LV: { chars: 21, bban_regexp: "^[A-Z]{4}[A-Z0-9]{13}$", IBANRegistry: true, SEPA: true }, + LY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MA: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: false, SEPA: false }, MC: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, MD: { chars: 24, bban_regexp: "^[A-Z0-9]{2}[A-Z0-9]{18}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - ME: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true }, + ME: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true, SEPA: false }, MF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - MG: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, - MH: { chars: null, bban_regexp: null, IBANRegistry: false }, + MG: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, + MH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, MK: { chars: 19, bban_regexp: "^[0-9]{3}[A-Z0-9]{10}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - ML: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false }, - MM: { chars: null, bban_regexp: null, IBANRegistry: false }, - MN: { chars: null, bban_regexp: null, IBANRegistry: false }, - MO: { chars: null, bban_regexp: null, IBANRegistry: false }, - MP: { chars: null, bban_regexp: null, IBANRegistry: false }, + ML: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false, SEPA: false }, + MM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MP: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, MQ: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - MR: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: true }, - MS: { chars: null, bban_regexp: null, IBANRegistry: false }, + MR: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: true, SEPA: false }, + MS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, MT: { chars: 31, bban_regexp: "^[A-Z]{4}[0-9]{5}[A-Z0-9]{18}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, MU: { chars: 30, bban_regexp: "^[A-Z]{4}[0-9]{19}[A-Z]{3}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - MV: { chars: null, bban_regexp: null, IBANRegistry: false }, - MW: { chars: null, bban_regexp: null, IBANRegistry: false }, - MX: { chars: null, bban_regexp: null, IBANRegistry: false }, - MY: { chars: null, bban_regexp: null, IBANRegistry: false }, - MZ: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: false }, - NA: { chars: null, bban_regexp: null, IBANRegistry: false }, + MV: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MX: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + MZ: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: false, SEPA: false }, + NA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, NC: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - NE: { chars: 28, bban_regexp: "^[A-Z]{2}[0-9]{22}$", IBANRegistry: false }, - NF: { chars: null, bban_regexp: null, IBANRegistry: false }, - NG: { chars: null, bban_regexp: null, IBANRegistry: false }, - NI: { chars: 32, bban_regexp: "^[A-Z]{4}[0-9]{24}$", IBANRegistry: false }, - NL: { chars: 18, bban_regexp: "^[A-Z]{4}[0-9]{10}$", IBANRegistry: true }, - NO: { chars: 15, bban_regexp: "^[0-9]{11}$", IBANRegistry: true }, - NP: { chars: null, bban_regexp: null, IBANRegistry: false }, - NR: { chars: null, bban_regexp: null, IBANRegistry: false }, - NU: { chars: null, bban_regexp: null, IBANRegistry: false }, - NZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - OM: { chars: null, bban_regexp: null, IBANRegistry: false }, - PA: { chars: null, bban_regexp: null, IBANRegistry: false }, - PE: { chars: null, bban_regexp: null, IBANRegistry: false }, + NE: { chars: 28, bban_regexp: "^[A-Z]{2}[0-9]{22}$", IBANRegistry: false, SEPA: false }, + NF: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NI: { chars: 32, bban_regexp: "^[A-Z]{4}[0-9]{24}$", IBANRegistry: false, SEPA: false }, + NL: { chars: 18, bban_regexp: "^[A-Z]{4}[0-9]{10}$", IBANRegistry: true, SEPA: true }, + NO: { chars: 15, bban_regexp: "^[0-9]{11}$", IBANRegistry: true, SEPA: true }, + NP: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + NZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + OM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, PF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - PG: { chars: null, bban_regexp: null, IBANRegistry: false }, - PH: { chars: null, bban_regexp: null, IBANRegistry: false }, - PK: { chars: 24, bban_regexp: "^[A-Z0-9]{4}[0-9]{16}$", IBANRegistry: true }, - PL: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: true }, + PG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PK: { chars: 24, bban_regexp: "^[A-Z0-9]{4}[0-9]{16}$", IBANRegistry: true, SEPA: false }, + PL: { chars: 28, bban_regexp: "^[0-9]{24}$", IBANRegistry: true, SEPA: true }, PM: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - PN: { chars: null, bban_regexp: null, IBANRegistry: false }, - PR: { chars: null, bban_regexp: null, IBANRegistry: false }, - PS: { chars: 29, bban_regexp: "^[A-Z0-9]{4}[0-9]{21}$", IBANRegistry: true }, - PT: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: true }, - PW: { chars: null, bban_regexp: null, IBANRegistry: false }, - PY: { chars: null, bban_regexp: null, IBANRegistry: false }, - QA: { chars: 29, bban_regexp: "^[A-Z]{4}[A-Z0-9]{21}$", IBANRegistry: true }, + PN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PS: { chars: 29, bban_regexp: "^[A-Z0-9]{4}[0-9]{21}$", IBANRegistry: true, SEPA: false }, + PT: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: true, SEPA: true }, + PW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + PY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + QA: { chars: 29, bban_regexp: "^[A-Z]{4}[A-Z0-9]{21}$", IBANRegistry: true, SEPA: false }, RE: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - RO: { chars: 24, bban_regexp: "^[A-Z]{4}[A-Z0-9]{16}$", IBANRegistry: true }, - RS: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true }, - RU: { chars: null, bban_regexp: null, IBANRegistry: false }, - RW: { chars: null, bban_regexp: null, IBANRegistry: false }, - SA: { chars: 24, bban_regexp: "^[0-9]{2}[A-Z0-9]{18}$", IBANRegistry: true }, - SB: { chars: null, bban_regexp: null, IBANRegistry: false }, + RO: { chars: 24, bban_regexp: "^[A-Z]{4}[A-Z0-9]{16}$", IBANRegistry: true, SEPA: true }, + RS: { chars: 22, bban_regexp: "^[0-9]{18}$", IBANRegistry: true, SEPA: false }, + RU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + RW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SA: { chars: 24, bban_regexp: "^[0-9]{2}[A-Z0-9]{18}$", IBANRegistry: true, SEPA: false }, + SB: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, SC: { chars: 31, bban_regexp: "^[[A-Z]{4}[]0-9]{20}[A-Z]{3}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - SD: { chars: null, bban_regexp: null, IBANRegistry: false }, - SE: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - SG: { chars: null, bban_regexp: null, IBANRegistry: false }, - SH: { chars: null, bban_regexp: null, IBANRegistry: false }, - SI: { chars: 19, bban_regexp: "^[0-9]{15}$", IBANRegistry: true }, - SJ: { chars: null, bban_regexp: null, IBANRegistry: false }, - SK: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - SL: { chars: null, bban_regexp: null, IBANRegistry: false }, + SD: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SE: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: true }, + SG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SI: { chars: 19, bban_regexp: "^[0-9]{15}$", IBANRegistry: true, SEPA: true }, + SJ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SK: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: true }, + SL: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, SM: { chars: 27, bban_regexp: "^[A-Z]{1}[0-9]{10}[A-Z0-9]{12}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: true }, - SN: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false }, - SO: { chars: null, bban_regexp: null, IBANRegistry: false }, - SR: { chars: null, bban_regexp: null, IBANRegistry: false }, - SS: { chars: null, bban_regexp: null, IBANRegistry: false }, - ST: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: true }, - SV: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true }, - SX: { chars: null, bban_regexp: null, IBANRegistry: false }, - SY: { chars: null, bban_regexp: null, IBANRegistry: false }, - SZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - TC: { chars: null, bban_regexp: null, IBANRegistry: false }, - TD: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false }, + SN: { chars: 28, bban_regexp: "^[A-Z]{1}[0-9]{23}$", IBANRegistry: false, SEPA: false }, + SO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SR: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ST: { chars: 25, bban_regexp: "^[0-9]{21}$", IBANRegistry: true, SEPA: false }, + SV: { chars: 28, bban_regexp: "^[A-Z]{4}[0-9]{20}$", IBANRegistry: true, SEPA: false }, + SX: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + SZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TC: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TD: { chars: 27, bban_regexp: "^[0-9]{23}$", IBANRegistry: false, SEPA: false }, TF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - TG: { chars: 28, bban_regexp: "^[A-Z]{2}[0-9]{22}$", IBANRegistry: false }, - TH: { chars: null, bban_regexp: null, IBANRegistry: false }, - TJ: { chars: null, bban_regexp: null, IBANRegistry: false }, - TK: { chars: null, bban_regexp: null, IBANRegistry: false }, - TL: { chars: 23, bban_regexp: "^[0-9]{19}$", IBANRegistry: true }, - TM: { chars: null, bban_regexp: null, IBANRegistry: false }, - TN: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true }, - TO: { chars: null, bban_regexp: null, IBANRegistry: false }, - TR: { chars: 26, bban_regexp: "^[0-9]{5}[A-Z0-9]{17}$", IBANRegistry: true }, - TT: { chars: null, bban_regexp: null, IBANRegistry: false }, - TV: { chars: null, bban_regexp: null, IBANRegistry: false }, - TW: { chars: null, bban_regexp: null, IBANRegistry: false }, - TZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - UA: { chars: 29, bban_regexp: "^[0-9]{6}[A-Z0-9]{19}$", IBANRegistry: true }, - UG: { chars: null, bban_regexp: null, IBANRegistry: false }, - UM: { chars: null, bban_regexp: null, IBANRegistry: false }, - US: { chars: null, bban_regexp: null, IBANRegistry: false }, - UY: { chars: null, bban_regexp: null, IBANRegistry: false }, - UZ: { chars: null, bban_regexp: null, IBANRegistry: false }, - VA: { chars: 22, bban_regexp: "^[0-9]{18}", IBANRegistry: true }, - VC: { chars: null, bban_regexp: null, IBANRegistry: false }, - VE: { chars: null, bban_regexp: null, IBANRegistry: false }, - VG: { chars: 24, bban_regexp: "^[A-Z0-9]{4}[0-9]{16}$", IBANRegistry: true }, - VI: { chars: null, bban_regexp: null, IBANRegistry: false }, - VN: { chars: null, bban_regexp: null, IBANRegistry: false }, - VU: { chars: null, bban_regexp: null, IBANRegistry: false }, + TG: { chars: 28, bban_regexp: "^[A-Z]{2}[0-9]{22}$", IBANRegistry: false, SEPA: false }, + TH: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TJ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TK: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TL: { chars: 23, bban_regexp: "^[0-9]{19}$", IBANRegistry: true, SEPA: false }, + TM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TN: { chars: 24, bban_regexp: "^[0-9]{20}$", IBANRegistry: true, SEPA: false }, + TO: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TR: { chars: 26, bban_regexp: "^[0-9]{5}[A-Z0-9]{17}$", IBANRegistry: true, SEPA: false }, + TT: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TV: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + TZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + UA: { chars: 29, bban_regexp: "^[0-9]{6}[A-Z0-9]{19}$", IBANRegistry: true, SEPA: false }, + UG: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + UM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + US: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + UY: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + UZ: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VA: { chars: 22, bban_regexp: "^[0-9]{18}", IBANRegistry: true, SEPA: false }, + VC: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VG: { chars: 24, bban_regexp: "^[A-Z0-9]{4}[0-9]{16}$", IBANRegistry: true, SEPA: false }, + VI: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VN: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + VU: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, WF: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - WS: { chars: null, bban_regexp: null, IBANRegistry: false }, - XK: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true }, - YE: { chars: null, bban_regexp: null, IBANRegistry: false }, + WS: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + XK: { chars: 20, bban_regexp: "^[0-9]{16}$", IBANRegistry: true, SEPA: false }, + YE: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, YT: { chars: 27, bban_regexp: "^[0-9]{10}[A-Z0-9]{11}[0-9]{2}$", - IBANRegistry: true + IBANRegistry: true, + SEPA: false }, - ZA: { chars: null, bban_regexp: null, IBANRegistry: false }, - ZM: { chars: null, bban_regexp: null, IBANRegistry: false }, - ZW: { chars: null, bban_regexp: null, IBANRegistry: false } + ZA: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ZM: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false }, + ZW: { chars: null, bban_regexp: null, IBANRegistry: false, SEPA: false } }; diff --git a/test/IBANToolsTest.ts b/test/IBANToolsTest.ts index cdda680..ec31e77 100755 --- a/test/IBANToolsTest.ts +++ b/test/IBANToolsTest.ts @@ -173,37 +173,49 @@ describe("IBANTools", () => { }); }); - describe("When calling isValidBIC()", function() { - it("with valid BIC ABNANL2A should return true", function() { + describe("When calling isValidBIC()", function () { + it("with valid BIC ABNANL2A should return true", function () { expect(iban.isValidBIC("ABNANL2A")).to.be.true; }); - it("with valid BIC ABNANL2A000 should return true", function() { + it("with valid BIC ABNANL2A000 should return true", function () { expect(iban.isValidBIC("ABNANL2A000")).to.be.true; }); - it("with valid BIC ABNANL2AXXX should return true", function() { + it("with valid BIC ABNANL2AXXX should return true", function () { expect(iban.isValidBIC("ABNANL2AXXX")).to.be.true; }); - it("with valid BIC ABNAAA2AXXX should return true", function() { + it("with valid BIC ABNAAA2AXXX should return true", function () { expect(iban.isValidBIC("ABNAAA2AXXX")).to.be.false; }); - it("with valid BIC NOLADE21KI should return true", function() { + it("with valid BIC NOLADE21KI should return true", function () { expect(iban.isValidBIC("NOLADE21KIE")).to.be.true; }); - it("with valid BIC INGDDEFFXXX should return true", function() { + it("with valid BIC INGDDEFFXXX should return true", function () { expect(iban.isValidBIC("INGDDEFFXXX")).to.be.true; }); - it("with invalid BIC INGDEFFXXX should return false", function() { + it("with invalid BIC INGDEFFXXX should return false", function () { expect(iban.isValidBIC("INGDEFFXXX")).to.be.false; }); - it("with invalid BIC ABN4NL2A should return false", function() { + it("with invalid BIC ABN4NL2A should return false", function () { expect(iban.isValidBIC("ABN4NL2A")).to.be.false; }); - it("with invalid BIC ABNANL2A01F should return true", function() { + it("with invalid BIC ABNANL2A01F should return true", function () { expect(iban.isValidBIC("ABNANL2A01F")).to.be.true; }); }); - describe("When calling extractBIC() with valid BIC ABNANL2A", function() { + describe("When calling isSEPACountry()", function () { + it("with valid country code NL should return true", function () { + expect(iban.isSEPACountry("NL")).to.be.true + }); + it("with valid country code PK return false", function () { + expect(iban.isSEPACountry("PK")).to.be.false; + }); + it("with non valid country code XX return false", function () { + expect(iban.isSEPACountry("XX")).to.be.false; + }); + }); + + describe("When calling extractBIC() with valid BIC ABNANL2A", function () { const ext = iban.extractBIC("ABNANL2A"); it("valid should be true", () => { expect(ext.valid).to.be.true; @@ -231,7 +243,7 @@ describe("IBANTools", () => { }); }); - describe("When calling extractBIC() with invalid BIC ABN7NL2A", function() { + describe("When calling extractBIC() with invalid BIC ABN7NL2A", function () { const ext = iban.extractBIC("ABN7NL2A"); it("valid should be false", () => { expect(ext.valid).to.be.false; @@ -253,7 +265,7 @@ describe("IBANTools", () => { }); }); - describe("When calling extractBIC() with valid BIC NEDSZAJ0XXX", function() { + describe("When calling extractBIC() with valid BIC NEDSZAJ0XXX", function () { const ext = iban.extractBIC("NEDSZAJ0XXX"); it("valid should be true", () => { expect(ext.valid).to.be.true;