Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a68399f

Browse files
committed
[Validator] Sync IBAN formats with Swift IBAN registry
1 parent 4ae23e6 commit a68399f

File tree

2 files changed

+38
-14
lines changed

2 files changed

+38
-14
lines changed

src/Symfony/Component/Validator/Constraints/IbanValidator.php

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,38 +42,41 @@ class IbanValidator extends ConstraintValidator
4242
'AL' => 'AL\d{2}\d{8}[\dA-Z]{16}', // Albania
4343
'AO' => 'AO\d{2}\d{21}', // Angola
4444
'AT' => 'AT\d{2}\d{5}\d{11}', // Austria
45-
'AX' => 'FI\d{2}\d{6}\d{7}\d{1}', // Aland Islands
45+
'AX' => 'FI\d{2}\d{3}\d{11}', // Aland Islands
4646
'AZ' => 'AZ\d{2}[A-Z]{4}[\dA-Z]{20}', // Azerbaijan
4747
'BA' => 'BA\d{2}\d{3}\d{3}\d{8}\d{2}', // Bosnia and Herzegovina
4848
'BE' => 'BE\d{2}\d{3}\d{7}\d{2}', // Belgium
4949
'BF' => 'BF\d{2}\d{23}', // Burkina Faso
5050
'BG' => 'BG\d{2}[A-Z]{4}\d{4}\d{2}[\dA-Z]{8}', // Bulgaria
5151
'BH' => 'BH\d{2}[A-Z]{4}[\dA-Z]{14}', // Bahrain
52-
'BI' => 'BI\d{2}\d{12}', // Burundi
52+
'BI' => 'BI\d{2}\d{5}\d{5}\d{11}\d{2}', // Burundi
5353
'BJ' => 'BJ\d{2}[A-Z]{1}\d{23}', // Benin
54-
'BY' => 'BY\d{2}[\dA-Z]{4}\d{4}[\dA-Z]{16}', // Belarus - https://bank.codes/iban/structure/belarus/
5554
'BL' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Saint Barthelemy
56-
'BR' => 'BR\d{2}\d{8}\d{5}\d{10}[A-Z][\dA-Z]', // Brazil
55+
'BR' => 'BR\d{2}\d{8}\d{5}\d{10}[A-Z]{1}[\dA-Z]{1}', // Brazil
56+
'BY' => 'BY\d{2}[\dA-Z]{4}\d{4}[\dA-Z]{16}', // Belarus - https://bank.codes/iban/structure/belarus/
5757
'CG' => 'CG\d{2}\d{23}', // Congo
5858
'CH' => 'CH\d{2}\d{5}[\dA-Z]{12}', // Switzerland
5959
'CI' => 'CI\d{2}[A-Z]{1}\d{23}', // Ivory Coast
6060
'CM' => 'CM\d{2}\d{23}', // Cameron
61-
'CR' => 'CR\d{2}0\d{3}\d{14}', // Costa Rica
61+
'CR' => 'CR\d{2}\d{4}\d{14}', // Costa Rica
6262
'CV' => 'CV\d{2}\d{21}', // Cape Verde
6363
'CY' => 'CY\d{2}\d{3}\d{5}[\dA-Z]{16}', // Cyprus
64-
'CZ' => 'CZ\d{2}\d{20}', // Czech Republic
64+
'CZ' => 'CZ\d{2}\d{4}\d{6}\d{10}', // Czech Republic
6565
'DE' => 'DE\d{2}\d{8}\d{10}', // Germany
66+
'DJ' => 'DJ\d{2}\d{5}\d{5}\d{11}\d{2}', // Djibouti
67+
'DK' => 'DK\d{2}\d{4}\d{9}\d{1}', // Denmark
6668
'DO' => 'DO\d{2}[\dA-Z]{4}\d{20}', // Dominican Republic
67-
'DK' => 'DK\d{2}\d{4}\d{10}', // Denmark
6869
'DZ' => 'DZ\d{2}\d{20}', // Algeria
6970
'EE' => 'EE\d{2}\d{2}\d{2}\d{11}\d{1}', // Estonia
71+
'EG' => 'EG\d{2}\d{4}\d{4}\d{17}', // Egypt
7072
'ES' => 'ES\d{2}\d{4}\d{4}\d{1}\d{1}\d{10}', // Spain (also includes Canary Islands, Ceuta and Melilla)
71-
'FI' => 'FI\d{2}\d{6}\d{7}\d{1}', // Finland
73+
'FI' => 'FI\d{2}\d{3}\d{11}', // Finland
7274
'FO' => 'FO\d{2}\d{4}\d{9}\d{1}', // Faroe Islands
7375
'FR' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // France
74-
'GF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Guyana
7576
'GB' => 'GB\d{2}[A-Z]{4}\d{6}\d{8}', // United Kingdom of Great Britain and Northern Ireland
7677
'GE' => 'GE\d{2}[A-Z]{2}\d{16}', // Georgia
78+
'GF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Guyana
79+
'GG' => 'GB\d{2}[A-Z]{4}\d{6}\d{8}', // Guernsey
7780
'GI' => 'GI\d{2}[A-Z]{4}[\dA-Z]{15}', // Gibraltar
7881
'GL' => 'GL\d{2}\d{4}\d{9}\d{1}', // Greenland
7982
'GP' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Guadeloupe
@@ -83,17 +86,22 @@ class IbanValidator extends ConstraintValidator
8386
'HU' => 'HU\d{2}\d{3}\d{4}\d{1}\d{15}\d{1}', // Hungary
8487
'IE' => 'IE\d{2}[A-Z]{4}\d{6}\d{8}', // Ireland
8588
'IL' => 'IL\d{2}\d{3}\d{3}\d{13}', // Israel
89+
'IM' => 'GB\d{2}[A-Z]{4}\d{6}\d{8}', // Isle of Man
90+
'IQ' => 'IQ\d{2}[A-Z]{4}\d{3}\d{12}', // Iraq
8691
'IR' => 'IR\d{2}\d{22}', // Iran
8792
'IS' => 'IS\d{2}\d{4}\d{2}\d{6}\d{10}', // Iceland
8893
'IT' => 'IT\d{2}[A-Z]{1}\d{5}\d{5}[\dA-Z]{12}', // Italy
94+
'JE' => 'GB\d{2}[A-Z]{4}\d{6}\d{8}', // Jersey
8995
'JO' => 'JO\d{2}[A-Z]{4}\d{4}[\dA-Z]{18}', // Jordan
90-
'KW' => 'KW\d{2}[A-Z]{4}\d{22}', // KUWAIT
96+
'KW' => 'KW\d{2}[A-Z]{4}[\dA-Z]{22}', // KUWAIT
9197
'KZ' => 'KZ\d{2}\d{3}[\dA-Z]{13}', // Kazakhstan
9298
'LB' => 'LB\d{2}\d{4}[\dA-Z]{20}', // LEBANON
99+
'LC' => 'LC\d{2}[A-Z]{4}[\dA-Z]{24}', // Saint Lucia
93100
'LI' => 'LI\d{2}\d{5}[\dA-Z]{12}', // Liechtenstein (Principality of)
94101
'LT' => 'LT\d{2}\d{5}\d{11}', // Lithuania
95102
'LU' => 'LU\d{2}\d{3}[\dA-Z]{13}', // Luxembourg
96103
'LV' => 'LV\d{2}[A-Z]{4}[\dA-Z]{13}', // Latvia
104+
'LY' => 'LY\d{2}\d{3}\d{3}\d{15}', // Libya
97105
'MC' => 'MC\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Monaco
98106
'MD' => 'MD\d{2}[\dA-Z]{2}[\dA-Z]{18}', // Moldova
99107
'ME' => 'ME\d{2}\d{3}\d{13}\d{2}', // Montenegro
@@ -119,16 +127,21 @@ class IbanValidator extends ConstraintValidator
119127
'RE' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Reunion
120128
'RO' => 'RO\d{2}[A-Z]{4}[\dA-Z]{16}', // Romania
121129
'RS' => 'RS\d{2}\d{3}\d{13}\d{2}', // Serbia
130+
'RU' => 'RU\d{2}\d{9}\d{5}[\dA-Z]{15}', // Russia
122131
'SA' => 'SA\d{2}\d{2}[\dA-Z]{18}', // Saudi Arabia
132+
'SC' => 'SC\d{2}[A-Z]{4}\d{2}\d{2}\d{16}[A-Z]{3}', // Seychelles
133+
'SD' => 'SD\d{2}\d{2}\d{12}', // Sudan
123134
'SE' => 'SE\d{2}\d{3}\d{16}\d{1}', // Sweden
124135
'SI' => 'SI\d{2}\d{5}\d{8}\d{2}', // Slovenia
125136
'SK' => 'SK\d{2}\d{4}\d{6}\d{10}', // Slovak Republic
126137
'SM' => 'SM\d{2}[A-Z]{1}\d{5}\d{5}[\dA-Z]{12}', // San Marino
127138
'SN' => 'SN\d{2}[A-Z]{1}\d{23}', // Senegal
139+
'ST' => 'ST\d{2}\d{4}\d{4}\d{11}\d{2}', // Sao Tome and Principe
140+
'SV' => 'SV\d{2}[A-Z]{4}\d{20}', // El Salvador
128141
'TF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Southern Territories
129142
'TL' => 'TL\d{2}\d{3}\d{14}\d{2}', // Timor-Leste
130143
'TN' => 'TN\d{2}\d{2}\d{3}\d{13}\d{2}', // Tunisia
131-
'TR' => 'TR\d{2}\d{5}[\dA-Z]{1}[\dA-Z]{16}', // Turkey
144+
'TR' => 'TR\d{2}\d{5}\d{1}[\dA-Z]{16}', // Turkey
132145
'UA' => 'UA\d{2}\d{6}[\dA-Z]{19}', // Ukraine
133146
'VA' => 'VA\d{2}\d{3}\d{15}', // Vatican City State
134147
'VG' => 'VG\d{2}[A-Z]{4}\d{16}', // Virgin Islands, British

src/Symfony/Component/Validator/Tests/Constraints/IbanValidatorTest.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,17 @@ public function getValidIbans()
116116
['AE07 0331 2345 6789 0123 456'], // UAE
117117
['GB12 CPBK 0892 9965 0449 91'], // United Kingdom
118118

119+
['DJ21 0001 0000 0001 5400 0100 186'], // Djibouti
120+
['EG38 0019 0005 0000 0000 2631 8000 2'], // Egypt
121+
['IQ98 NBIQ 8501 2345 6789 012'], // Iraq
122+
['LC55 HEMM 0001 0001 0012 0012 0002 3015'], // Saint Lucia
123+
['LY83 0020 4800 0020 1001 2036 1'], // Libya
124+
['RU02 0445 2560 0407 0281 0412 3456 7890 1'], // Russia
125+
['SC18 SSCB 1101 0000 0000 0000 1497 USD'], // Seychelles
126+
['SD21 2901 0501 2340 01'], // Sudan
127+
['ST23 0002 0000 0289 3557 1014 8'], // Sao Tome and Principe
128+
['SV62 CENR 0000 0000 0000 0070 0025'], // El Salvador
129+
119130
// Extended country list
120131
// http://www.nordea.com/Our+services/International+products+and+services/Cash+Management/IBAN+countries/908462.html
121132
// https://www.swift.com/sites/default/files/resources/iban_registry.pdf
@@ -127,7 +138,7 @@ public function getValidIbans()
127138
['BR1800000000141455123924100C2'], // Brazil
128139
['VG96VPVG0000012345678901'], // British Virgin Islands
129140
['BF1030134020015400945000643'], // Burkina Faso
130-
['BI43201011067444'], // Burundi
141+
['BI4210000100010000332045181'], // Burundi
131142
['CM2110003001000500000605306'], // Cameroon
132143
['CV64000300004547069110176'], // Cape Verde
133144
['FR7630007000110009970004942'], // Central African Republic
@@ -250,7 +261,7 @@ public function getIbansWithInvalidFormat()
250261
['CV640003000045470691101761'], // Cape Verde
251262
['FR76300070001100099700049421'], // Central African Republic
252263
['CG52300110002021512345678901'], // Congo
253-
['CR05152020010262840661'], // Costa Rica
264+
['CR05A52020010262840661'], // Costa Rica
254265
['CR0515202001026284066'], // Costa Rica
255266
['DO28BAGR000000012124536113241'], // Dominican Republic
256267
['GT82TRAJ010200000012100296901'], // Guatemala
@@ -358,7 +369,7 @@ public function getIbansWithValidFormatButIncorrectChecksum()
358369
['BR1800000000141455123924100C3'], // Brazil
359370
['VG96VPVG0000012345678902'], // British Virgin Islands
360371
['BF1030134020015400945000644'], // Burkina Faso
361-
['BI43201011067445'], // Burundi
372+
['BI3210000100010000332045181'], // Burundi
362373
['CM2110003001000500000605307'], // Cameroon
363374
['CV64000300004547069110177'], // Cape Verde
364375
['FR7630007000110009970004943'], // Central African Republic

0 commit comments

Comments
 (0)