IBANValidator : add Falkland Islands, Mongolia, Nicaragua, Oman, Somalia (#209)
* add IBANValidator for Falkland Islands, since Jul-23,
Mongolia, Nicaragua, Oman, Somalia
published in IBAN REGISTRY Release 97 – Mar 2024
* IBANValidator Test with examples from IBAN REGISTRY Release 97
the examples for Nicaragua is buggy - I've changed the check digit
diff --git a/src/main/java/org/apache/commons/validator/routines/IBANValidator.java b/src/main/java/org/apache/commons/validator/routines/IBANValidator.java
index 4db944d..aa6136c 100644
--- a/src/main/java/org/apache/commons/validator/routines/IBANValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/IBANValidator.java
@@ -147,6 +147,7 @@
new Validator("EG", 29, "EG\\d{27}"), // Egypt
new Validator("ES", 24, "ES\\d{22}"), // Spain
new Validator("FI", 18, "\\d{16}", "AX"), // Finland
+ new Validator("FK", 18, "FK\\d{2}[A-Z]{2}\\d{12}"), // Falkland Islands, since Jul-23
new Validator("FO", 18, "FO\\d{16}"), // Faroe Islands
new Validator("FR", 27, "\\d{12}[A-Z0-9]{11}\\d{2}", "GF", "GP", "MQ", "RE", "PF", "TF", "YT", "NC", "BL", "MF", "PM", "WF"), // France
new Validator("GB", 22, "\\d{2}[A-Z]{4}\\d{14}", "IM", "JE", "GG"), // United Kingdom
@@ -176,11 +177,14 @@
new Validator("MD", 24, "MD\\d{2}[A-Z0-9]{20}"), // Moldova
new Validator("ME", 22, "ME\\d{20}"), // Montenegro
new Validator("MK", 19, "MK\\d{5}[A-Z0-9]{10}\\d{2}"), // Macedonia
+ new Validator("MN", 20, "MN\\d{18}"), // Mongolia, since Apr-23
new Validator("MR", 27, "MR\\d{25}"), // Mauritania
new Validator("MT", 31, "MT\\d{2}[A-Z]{4}\\d{5}[A-Z0-9]{18}"), // Malta
new Validator("MU", 30, "MU\\d{2}[A-Z]{4}\\d{19}[A-Z]{3}"), // Mauritius
+ new Validator("NI", 28, "NI\\d{2}[A-Z]{4}\\d{20}"), // Nicaragua, since Apr-23
new Validator("NL", 18, "NL\\d{2}[A-Z]{4}\\d{10}"), // Netherlands (The)
new Validator("NO", 15, "NO\\d{13}"), // Norway
+ new Validator("OM", 23, "OM\\d{5}[A-Z0-9]{16}"), // Oman, since Mar-24
new Validator("PK", 24, "PK\\d{2}[A-Z]{4}[A-Z0-9]{16}"), // Pakistan
new Validator("PL", 28, "PL\\d{26}"), // Poland
new Validator("PS", 29, "PS\\d{2}[A-Z]{4}[A-Z0-9]{21}"), // Palestine, State of
@@ -188,7 +192,7 @@
new Validator("QA", 29, "QA\\d{2}[A-Z]{4}[A-Z0-9]{21}"), // Qatar
new Validator("RO", 24, "RO\\d{2}[A-Z]{4}[A-Z0-9]{16}"), // Romania
new Validator("RS", 22, "RS\\d{20}"), // Serbia
- new Validator("RU", 33, "RU\\d{31}"), // Russia
+ new Validator("RU", 33, "RU\\d{16}[A-Z0-9]{15}"), // Russia
new Validator("SA", 24, "SA\\d{4}[A-Z0-9]{18}"), // Saudi Arabia
new Validator("SC", 31, "SC\\d{2}[A-Z]{4}\\d{20}[A-Z]{3}"), // Seychelles
new Validator("SD", 18, "SD\\d{16}"), // Sudan
@@ -196,6 +200,7 @@
new Validator("SI", 19, "SI\\d{17}"), // Slovenia
new Validator("SK", 24, "SK\\d{22}"), // Slovakia
new Validator("SM", 27, "SM\\d{2}[A-Z]{1}\\d{10}[A-Z0-9]{12}"), // San Marino
+ new Validator("SO", 23, "SO\\d{21}"), // Somalia, since Feb-23
new Validator("ST", 25, "ST\\d{23}"), // Sao Tome and Principe
new Validator("SV", 28, "SV\\d{2}[A-Z]{4}\\d{20}"), // El Salvador
new Validator("TL", 23, "TL\\d{21}"), // Timor-Leste
diff --git a/src/test/java/org/apache/commons/validator/routines/IBANValidatorTest.java b/src/test/java/org/apache/commons/validator/routines/IBANValidatorTest.java
index e844988..3e823fe 100644
--- a/src/test/java/org/apache/commons/validator/routines/IBANValidatorTest.java
+++ b/src/test/java/org/apache/commons/validator/routines/IBANValidatorTest.java
@@ -90,6 +90,7 @@
// FI other
"AX2112345600000785", // FI other
"AX5542345670000081", // FI other
+ "FK88SC123456789012",
"FO6264600001631634",
"FR1420041010050500013M02606",
// FR 'other'
@@ -137,11 +138,14 @@
"MD24AG000225100013104168",
"ME25505000012345678951",
"MK07250120000058984",
+ "MN121234123456789123",
"MR1300020001010000123456753",
"MT84MALT011000012345MTLCAST001S",
"MU17BOMM0101101030300200000MUR",
+ "NI45BAPR00000013000003558124",
"NL91ABNA0417164300",
"NO9386011117947",
+ "OM810180000001299123456",
"PK36SCBL0000001123456702",
"PL61109010140000071219812874",
"PS92PALS000000000400123456702",
@@ -158,6 +162,7 @@
"SI56263300012039086",
"SK3112000000198742637541",
"SM86U0322509800000000270100",
+ "SO211000001001000100141",
"ST68000100010051845310112",
"SV62CENR00000000000000700025",
"SV43ACAT00000000000000123123",