Coverage for presidio_analyzer / predefined_recognizers / generic / iban_patterns.py: 100%
17 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-03-29 09:03 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-03-29 09:03 +0000
1"""
2List of different regex patterns for IBAN.
4The IBAN patterns are based on the IBAN specification here
5https://en.wikipedia.org/wiki/International_Bank_Account_Number
6In addition, an IBAN example per country can be found here:
7git shttps://www.xe.com/ibancalculator/countrylist
8An IBAN checker is available here: https://www.iban.com/iban-checker
9"""
11# IBAN parts format
12CC = "[A-Z]{2}" # country code
13CK = "[0-9]{2}[ ]?" # checksum
14BOS = "^"
15EOS = "$" # end of string
17A = "[A-Z][ ]?"
18A2 = "([A-Z][ ]?){2}"
19A3 = "([A-Z][ ]?){3}"
20A4 = "([A-Z][ ]?){4}"
22C = "[a-zA-Z0-9][ ]?"
23C2 = "([a-zA-Z0-9][ ]?){2}"
24C3 = "([a-zA-Z0-9][ ]?){3}"
25C4 = "([a-zA-Z0-9][ ]?){4}"
27N = "[0-9][ ]?"
28N2 = "([0-9][ ]?){2}"
29N3 = "([0-9][ ]?){3}"
30N4 = "([0-9][ ]?){4}"
32regex_per_country = {
33 # Albania (8n, 16c) ALkk bbbs sssx cccc cccc cccc cccc
34 "AL": "(AL)" + CK + N4 + N4 + C4 + C4 + C4 + C4,
35 # Andorra (8n, 12c) ADkk bbbb ssss cccc cccc cccc
36 "AD": "(AD)" + CK + N4 + N4 + C4 + C4 + C4,
37 # Austria (16n) ATkk bbbb bccc cccc cccc
38 "AT": "(AT)" + CK + N4 + N4 + N4 + N4,
39 # Azerbaijan (4c,20n) AZkk bbbb cccc cccc cccc cccc cccc
40 "AZ": "(AZ)" + CK + C4 + N4 + N4 + N4 + N4 + N4,
41 # Bahrain (4a,14c) BHkk bbbb cccc cccc cccc cc
42 "BH": "(BH)" + CK + A4 + C4 + C4 + C4 + C2,
43 # Belarus (4c, 4n, 16c) BYkk bbbb aaaa cccc cccc cccc cccc
44 "BY": "(BY)" + CK + C4 + N4 + C4 + C4 + C4 + C4,
45 # Belgium (12n) BEkk bbbc cccc ccxx
46 "BE": "(BE)" + CK + N4 + N4 + N4,
47 # Bosnia and Herzegovina (16n) BAkk bbbs sscc cccc ccxx
48 "BA": "(BA)" + CK + N4 + N4 + N4 + N4,
49 # Brazil (23n,1a,1c) BRkk bbbb bbbb ssss sccc cccc ccct n
50 "BR": "(BR)" + CK + N4 + N4 + N4 + N4 + N4 + N3 + A + C,
51 # Bulgaria (4a,6n,8c) BGkk bbbb ssss ttcc cccc cc
52 "BG": "(BG)" + CK + A4 + N4 + N + N + C2 + C4 + C2,
53 # Costa Rica (18n) CRkk 0bbb cccc cccc cccc cc (0 = always zero)
54 "CR": "(CR)" + CK + "[0]" + N3 + N4 + N4 + N4 + N2,
55 # Croatia (17n) HRkk bbbb bbbc cccc cccc c
56 "HR": "(HR)" + CK + N4 + N4 + N4 + N4 + N,
57 # Cyprus (8n,16c) CYkk bbbs ssss cccc cccc cccc cccc
58 "CY": "(CY)" + CK + N4 + N4 + C4 + C4 + C4 + C4,
59 # Czech Republic (20n) CZkk bbbb ssss sscc cccc cccc
60 "CZ": "(CZ)" + CK + N4 + N4 + N4 + N4 + N4,
61 # Denmark (14n) DKkk bbbb cccc cccc cc
62 "DK": "(DK)" + CK + N4 + N4 + N4 + N2,
63 # Dominican Republic (4a,20n) DOkk bbbb cccc cccc cccc cccc cccc
64 "DO": "(DO)" + CK + A4 + N4 + N4 + N4 + N4 + N4,
65 # EAt Timor (19n) TLkk bbbc cccc cccc cccc cxx
66 "TL": "(TL)" + CK + N4 + N4 + N4 + N4 + N3,
67 # Estonia (16n) EEkk bbss cccc cccc cccx
68 "EE": "(EE)" + CK + N4 + N4 + N4 + N4,
69 # Faroe Islands (14n) FOkk bbbb cccc cccc cx
70 "FO": "(FO)" + CK + N4 + N4 + N4 + N2,
71 # Finland (14n) FIkk bbbb bbcc cccc cx
72 "FI": "(FI)" + CK + N4 + N4 + N4 + N2,
73 # France (10n,11c,2n) FRkk bbbb bsss sscc cccc cccc cxx
74 "FR": "(FR)" + CK + N4 + N4 + N2 + C2 + C4 + C4 + C + N2,
75 # Georgia (2c,16n) GEkk bbcc cccc cccc cccc cc
76 "GE": "(GE)" + CK + C2 + N2 + N4 + N4 + N4 + N2,
77 # Germany (18n) DEkk bbbb bbbb cccc cccc cc
78 "DE": "(DE)" + CK + N4 + N4 + N4 + N4 + N2,
79 # Gibraltar (4a,15c) GIkk bbbb cccc cccc cccc ccc
80 "GI": "(GI)" + CK + A4 + C4 + C4 + C4 + C3,
81 # Greece (7n,16c) GRkk bbbs sssc cccc cccc cccc ccc
82 "GR": "(GR)" + CK + N4 + N3 + C + C4 + C4 + C4 + C3,
83 # Greenland (14n) GLkk bbbb cccc cccc cc
84 "GL": "(GL)" + CK + N4 + N4 + N4 + N2,
85 # Guatemala (4c,20c) GTkk bbbb mmtt cccc cccc cccc cccc
86 "GT": "(GT)" + CK + C4 + C4 + C4 + C4 + C4 + C4,
87 # Hungary (24n) HUkk bbbs sssx cccc cccc cccc cccx
88 "HU": "(HU)" + CK + N4 + N4 + N4 + N4 + N4 + N4,
89 # Iceland (22n) ISkk bbbb sscc cccc iiii iiii ii
90 "IS": "(IS)" + CK + N4 + N4 + N4 + N4 + N4 + N2,
91 # Ireland (4c,14n) IEkk aaaa bbbb bbcc cccc cc
92 "IE": "(IE)" + CK + C4 + N4 + N4 + N4 + N2,
93 # Israel (19n) ILkk bbbn nncc cccc cccc ccc
94 "IL": "(IL)" + CK + N4 + N4 + N4 + N4 + N3,
95 # Italy (1a,10n,12c) ITkk xbbb bbss sssc cccc cccc ccc
96 "IT": "(IT)" + CK + A + N3 + N4 + N3 + C + C3 + C + C4 + C3,
97 # Jordan (4a,22n) JOkk bbbb ssss cccc cccc cccc cccc cc
98 "JO": "(JO)" + CK + A4 + N4 + N4 + N4 + N4 + N4 + N2,
99 # Kazakhstan (3n,13c) KZkk bbbc cccc cccc cccc
100 "KZ": "(KZ)" + CK + N3 + C + C4 + C4 + C4,
101 # Kosovo (4n,10n,2n) XKkk bbbb cccc cccc cccc
102 "XK": "(XK)" + CK + N4 + N4 + N4 + N4,
103 # Kuwait (4a,22c) KWkk bbbb cccc cccc cccc cccc cccc cc
104 "KW": "(KW)" + CK + A4 + C4 + C4 + C4 + C4 + C4 + C2,
105 # Latvia (4a,13c) LVkk bbbb cccc cccc cccc c
106 "LV": "(LV)" + CK + A4 + C4 + C4 + C4 + C,
107 # Lebanon (4n,20c) LBkk bbbb cccc cccc cccc cccc cccc
108 "LB": "(LB)" + CK + N4 + C4 + C4 + C4 + C4 + C4,
109 # LiechteNtein (5n,12c) LIkk bbbb bccc cccc cccc c
110 "LI": "(LI)" + CK + N4 + N + C3 + C4 + C4 + C,
111 # Lithuania (16n) LTkk bbbb bccc cccc cccc
112 "LT": "(LT)" + CK + N4 + N4 + N4 + N4,
113 # Luxembourg (3n,13c) LUkk bbbc cccc cccc cccc
114 "LU": "(LU)" + CK + N3 + C + C4 + C4 + C4,
115 # Malta (4a,5n,18c) MTkk bbbb ssss sccc cccc cccc cccc ccc
116 "MT": "(MT)" + CK + A4 + N4 + N + C3 + C4 + C4 + C4 + C3,
117 # Mauritania (23n) MRkk bbbb bsss sscc cccc cccc cxx
118 "MR": "(MR)" + CK + N4 + N4 + N4 + N4 + N4 + N3,
119 # Mauritius (4a,19n,3a) MUkk bbbb bbss cccc cccc cccc 000m mm
120 "MU": "(MU)" + CK + A4 + N4 + N4 + N4 + N4 + N3 + A,
121 # Moldova (2c,18c) MDkk bbcc cccc cccc cccc cccc
122 "MD": "(MD)" + CK + C4 + C4 + C4 + C4 + C4,
123 # Monaco (10n,11c,2n) MCkk bbbb bsss sscc cccc cccc cxx
124 "MC": "(MC)" + CK + N4 + N4 + N2 + C2 + C4 + C4 + C + N2,
125 # Montenegro (18n) MEkk bbbc cccc cccc cccc xx
126 "ME": "(ME)" + CK + N4 + N4 + N4 + N4 + N2,
127 # Netherlands (4a,10n) NLkk bbbb cccc cccc cc
128 "NL": "(NL)" + CK + A4 + N4 + N4 + N2,
129 # North Macedonia (3n,10c,2n) MKkk bbbc cccc cccc cxx
130 "MK": "(MK)" + CK + N3 + C + C4 + C4 + C + N2,
131 # Norway (11n) NOkk bbbb cccc ccx
132 "NO": "(NO)" + CK + N4 + N4 + N3,
133 # Pakistan (4c,16n) PKkk bbbb cccc cccc cccc cccc
134 "PK": "(PK)" + CK + C4 + N4 + N4 + N4 + N4,
135 # Palestinian territories (4c,21n) PSkk bbbb xxxx xxxx xccc cccc cccc c
136 "PS": "(PS)" + CK + C4 + N4 + N4 + N4 + N4 + N,
137 # Poland (24n) PLkk bbbs sssx cccc cccc cccc cccc
138 "PL": "(PL)" + CK + N4 + N4 + N4 + N4 + N4 + N4,
139 # Portugal (21n) PTkk bbbb ssss cccc cccc cccx x
140 "PT": "(PT)" + CK + N4 + N4 + N4 + N4 + N,
141 # Qatar (4a,21c) QAkk bbbb cccc cccc cccc cccc cccc c
142 "QA": "(QA)" + CK + A4 + C4 + C4 + C4 + C4 + C,
143 # Romania (4a,16c) ROkk bbbb cccc cccc cccc cccc
144 "RO": "(RO)" + CK + A4 + C4 + C4 + C4 + C4,
145 # San Marino (1a,10n,12c) SMkk xbbb bbss sssc cccc cccc ccc
146 "SM": "(SM)" + CK + A + N3 + N4 + N3 + C + C4 + C4 + C3,
147 # Saudi Arabia (2n,18c) SAkk bbcc cccc cccc cccc cccc
148 "SA": "(SA)" + CK + N2 + C2 + C4 + C4 + C4 + C4,
149 # Serbia (18n) RSkk bbbc cccc cccc cccc xx
150 "RS": "(RS)" + CK + N4 + N4 + N4 + N4 + N2,
151 # Slovakia (20n) SKkk bbbb ssss sscc cccc cccc
152 "SK": "(SK)" + CK + N4 + N4 + N4 + N4 + N4,
153 # Slovenia (15n) SIkk bbss sccc cccc cxx
154 "SI": "(SI)" + CK + N4 + N4 + N4 + N3,
155 # Spain (20n) ESkk bbbb ssss xxcc cccc cccc
156 "ES": "(ES)" + CK + N4 + N4 + N4 + N4 + N4,
157 # Sweden (20n) SEkk bbbc cccc cccc cccc cccc
158 "SE": "(SE)" + CK + N4 + N4 + N4 + N4 + N4,
159 # Switzerland (5n,12c) CHkk bbbb bccc cccc cccc c
160 "CH": "(CH)" + CK + N4 + N + C3 + C4 + C4 + C,
161 # Tunisia (20n) TNkk bbss sccc cccc cccc cccc
162 "TN": "(TN)" + CK + N4 + N4 + N4 + N4 + N4,
163 # Turkey (5n,17c) TRkk bbbb bxcc cccc cccc cccc cc
164 "TR": "(TR)" + CK + N4 + N + C3 + C4 + C4 + C4 + C2,
165 # United Arab Emirates (3n,16n) AEkk bbbc cccc cccc cccc ccc
166 "AE": "(AE)" + CK + N4 + N4 + N4 + N4 + N3,
167 # United Kingdom (4a,14n) GBkk bbbb ssss sscc cccc cc
168 "GB": "(GB)" + CK + A4 + N4 + N4 + N4 + N2,
169 # Vatican City (3n,15n) VAkk bbbc cccc cccc cccc cc
170 "VA": "(VA)" + CK + N4 + N4 + N4 + N4 + N2,
171 # Virgin Islands, British (4c,16n) VGkk bbbb cccc cccc cccc cccc
172 "VG": "(VG)" + CK + C4 + N4 + N4 + N4 + N4,
173}