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

1""" 

2List of different regex patterns for IBAN. 

3 

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""" 

10 

11# IBAN parts format 

12CC = "[A-Z]{2}" # country code 

13CK = "[0-9]{2}[ ]?" # checksum 

14BOS = "^" 

15EOS = "$" # end of string 

16 

17A = "[A-Z][ ]?" 

18A2 = "([A-Z][ ]?){2}" 

19A3 = "([A-Z][ ]?){3}" 

20A4 = "([A-Z][ ]?){4}" 

21 

22C = "[a-zA-Z0-9][ ]?" 

23C2 = "([a-zA-Z0-9][ ]?){2}" 

24C3 = "([a-zA-Z0-9][ ]?){3}" 

25C4 = "([a-zA-Z0-9][ ]?){4}" 

26 

27N = "[0-9][ ]?" 

28N2 = "([0-9][ ]?){2}" 

29N3 = "([0-9][ ]?){3}" 

30N4 = "([0-9][ ]?){4}" 

31 

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}