Coverage for /home/runner/work/viur-core/viur-core/viur/src/viur/core/data/zip_patterns.py: 100%

2 statements  

« prev     ^ index     » next       coverage.py v7.16.1, created at 2026-09-25 15:02 +0000

1ZIP_CODE_PATTERNS = { 

2 "ac": r"^[Aa][Ss][Cc][Nn]\s{0,1}[1][Zz][Zz]$", 

3 "ad": r"^[Aa][Dd]\d{3}$", 

4 "ae": r"", 

5 "af": r"^\d{4}$", 

6 "ag": r"", 

7 "ai": r"^[Aa][I][-][2][6][4][0]$", 

8 "al": r"^\d{4}$", 

9 "am": r"^\d{4}$", 

10 "ao": r"", 

11 "ar": r"^\d{4}|[A-Za-z]\d{4}[a-zA-Z]{3}$", 

12 "as": r"^\d{5}(-{1}\d{4,6})$", 

13 "at": r"^\d{4}$", 

14 "au": r"^\d{4}$", 

15 "aw": r"", 

16 "ax": r"^\d{5}$", 

17 "az": r"^[Aa][Zz]\d{4}$", 

18 "ba": r"^\d{5}$", 

19 "bb": r"^[Aa][Zz]\d{5}$", 

20 "bd": r"^\d{4}$", 

21 "be": r"^\d{4}$", 

22 "bf": r"", 

23 "bg": r"^\d{4}$", 

24 "bh": r"^\d{3,4}$", 

25 "bi": r"", 

26 "bj": r"", 

27 "bl": r"^97133$", 

28 "bm": r"^[A-Za-z]{2}\s([A-Za-z]{2}|\d{2})$", 

29 "bn": r"^[A-Za-z]{2}\d{4}$", 

30 "bo": r"^\d{4}$", 

31 "bq": r"", 

32 "br": r"^\d{5}-\d{3}$", 

33 "bs": r"", 

34 "bt": r"^\d{5}$", 

35 "bw": r"", 

36 "by": r"^\d{6}$", 

37 "bz": r"", 

38 "ca": r"^([A-CEGHJ-NPR-TVWXYZaeghj-npr-tvwxyz]\d){2}\s?\d[A-CEGHJ-NPR-TVWXYZaeghj-npr-tvwxyz]\d$", 

39 "cc": r"^\d{4}$", 

40 "cd": r"^[Cc][Dd]$", 

41 "cf": r"", 

42 "cg": r"", 

43 "ch": r"^\d{4}$", 

44 "ci": r"", 

45 "ck": r"", 

46 "cl": r"^\d{7}\s\(\d{3}-\d{4}\)$", 

47 "cm": r"", 

48 "cn": r"^\d{6}$", 

49 "co": r"^\d{6}$", 

50 "cr": r"^\d{4,5}$", 

51 "cu": r"^\d{5}$", 

52 "cv": r"^\d{4}$", 

53 "cw": r"", 

54 "cx": r"^\d{4}$", 

55 "cy": r"^\d{4}$", 

56 "cz": r"^\d{5}\s\(\d{3}\s\d{2}\)$", 

57 "de": r"^\d{5}$", 

58 "dj": r"", 

59 "dk": r"^\d{4}$", 

60 "dm": r"", 

61 "do": r"^\d{5}$", 

62 "dz": r"^\d{5}$", 

63 "ec": r"^\d{6}$", 

64 "ee": r"^\d{5}$", 

65 "eg": r"^\d{5}$", 

66 "er": r"", 

67 "es": r"^\d{5}$", 

68 "et": r"^\d{4}$", 

69 "fi": r"^\d{5}$", 

70 "fj": r"", 

71 "fk": r"^[Ff][Ii][Qq]{2}\s{0,1}[1][Zz]{2}$", 

72 "fm": r"^\d{5}(-{1}\d{4})$", 

73 "fo": r"^\d{3}$", 

74 "fr": r"^\d{5}$", 

75 "ga": r"^\d{2}\s[a-zA-Z-_ ]\s\d{2}$", 

76 "gb": r"^[A-Z]{1,2}[0-9R][0-9A-Z]?\s*[0-9][A-JLNP-Z]{2}$", 

77 "gd": r"", 

78 "ge": r"^\d{4}$", 

79 "gf": r"^973\d{2}$", 

80 "gg": r"^[A-Za-z]{2}\d\s{0,1}\d[A-Za-z]{2}$", 

81 "gh": r"", 

82 "gi": r"^[Gg][Xx][1]{2}\s{0,1}[1][Aa]{2}$", 

83 "gl": r"^\d{4}$", 

84 "gm": r"", 

85 "gn": r"", 

86 "gp": r"^971\d{2}$", 

87 "gq": r"", 

88 "gr": r"^\d{3}\s{0,1}\d{2}$", 

89 "gs": r"^[Ss][Ii][Qq]{2}\s{0,1}[1][Zz]{2}$", 

90 "gt": r"^\d{5}$", 

91 "gu": r"^\d{5}$", 

92 "gw": r"^\d{4}$", 

93 "gy": r"", 

94 "hk": r"", 

95 "hm": r"^\d{4}$", 

96 "hn": r"^\d{5}$", 

97 "hr": r"^\d{5}$", 

98 "ht": r"^\d{4}$", 

99 "hu": r"^\d{4}$", 

100 "id": r"^\d{5}$", 

101 "ie": r"", 

102 "il": r"^\b\d{5}(\d{2})?$", 

103 "im": r"^[Ii][Mm]\d{1,2}\s\d[A-Z]{2}$", 

104 "in": r"^\d{6}$", 

105 "io": r"^[Bb]{2}[Nn][Dd]\s{0,1}[1][Zz]{2}$", 

106 "iq": r"^\d{5}$", 

107 "ir": r"^\d{5}-\d{5}$", 

108 "is": r"^\d{3}$", 

109 "it": r"^\d{5}$", 

110 "je": r"^[Jj][Ee]\d\s{0,1}\d[A-Za-z]{2}$", 

111 "jm": r"^\d{2}$", 

112 "jo": r"^\d{5}$", 

113 "jp": r"^\d{7}\s\(\d{3}-\d{4}\)$", 

114 "ke": r"^\d{5}$", 

115 "kg": r"^\d{6}$", 

116 "kh": r"^\d{5}$", 

117 "ki": r"", 

118 "km": r"", 

119 "kn": r"", 

120 "kp": r"", 

121 "kr": r"^\d{6}\s\(\d{3}-\d{3}\)$", 

122 "kw": r"^\d{5}$", 

123 "ky": r"^[Kk][Yy]\d[-\s]{0,1}\d{4}$", 

124 "kz": r"^\d{6}$", 

125 "la": r"^\d{5}$", 

126 "lb": r"^\d{4}\s{0,1}\d{4}$", 

127 "lc": r"", 

128 "li": r"^\d{4}$", 

129 "lk": r"^\d{5}$", 

130 "lr": r"^\d{4}$", 

131 "ls": r"^\d{3}$", 

132 "lt": r"^[Ll][Tt][- ]{0,1}\d{5}$", 

133 "lu": r"^\d{4}$", 

134 "lv": r"^[Ll][Vv][- ]{0,1}\d{4}$", 

135 "ly": r"^\d{5}$", 

136 "ma": r"^\d{5}$", 

137 "mc": r"^980\d{2}$", 

138 "md": r"^[Mm][Dd][- ]{0,1}\d{4}$", 

139 "me": r"^\d{5}$", 

140 "mf": r"^97150$", 

141 "mg": r"^\d{3}$", 

142 "mh": r"^\d{5}$", 

143 "mk": r"^\d{4}$", 

144 "ml": r"", 

145 "mm": r"^\d{5}$", 

146 "mn": r"^\d{5}$", 

147 "mo": r"", 

148 "mp": r"^\d{5}$", 

149 "mq": r"^972\d{2}$", 

150 "mr": r"", 

151 "ms": r"^[Mm][Ss][Rr]\s{0,1}\d{4}$", 

152 "mt": r"^[A-Za-z]{3}\s{0,1}\d{4}$", 

153 "mu": r"", 

154 "mv": r"^\d{4,5}$", 

155 "mw": r"", 

156 "mx": r"^\d{5}$", 

157 "my": r"^\d{5}$", 

158 "mz": r"^\d{4}$", 

159 "na": r"^\d{5}$", 

160 "nc": r"^988\d{2}$", 

161 "ne": r"^\d{4}$", 

162 "nf": r"^\d{4}$", 

163 "ng": r"^\d{6}$", 

164 "ni": r"^\d{5}$", 

165 "nl": r"^\d{4}\s{0,1}[A-Za-z]{2}$", 

166 "no": r"^\d{4}$", 

167 "np": r"^\d{5}$", 

168 "nr": r"", 

169 "nu": r"", 

170 "nz": r"^\d{4}$", 

171 "om": r"^\d{3}$", 

172 "pa": r"^\d{6}$", 

173 "pe": r"^\d{5}$", 

174 "pf": r"^987\d{2}$", 

175 "pg": r"^\d{3}$", 

176 "ph": r"^\d{4}$", 

177 "pk": r"^\d{5}$", 

178 "pl": r"^\d{2}[- ]{0,1}\d{3}$", 

179 "pm": r"^97500$", 

180 "pn": r"^[Pp][Cc][Rr][Nn]\s{0,1}[1][Zz]{2}$", 

181 "pr": r"^\d{5}$", 

182 "pt": r"^\d{4}[- ]{0,1}\d{3}$", 

183 "pw": r"^\d{5}$", 

184 "py": r"^\d{4}$", 

185 "qa": r"", 

186 "re": r"^974\d{2}$", 

187 "ro": r"^\d{6}$", 

188 "rs": r"^\d{5}$", 

189 "ru": r"^\d{6}$", 

190 "sa": r"^\d{5}(-{1}\d{4})?$", 

191 "sb": r"", 

192 "sc": r"", 

193 "sd": r"^\d{5}$", 

194 "se": r"^\d{3}\s*\d{2}$", 

195 "sg": r"^\d{6}$", 

196 "sh": r"^[Ss][Tt][Hh][Ll]\s{0,1}[1][Zz]{2}$", 

197 "si": r"^([Ss][Ii][- ]{0,1}){0,1}\d{4}$", 

198 "sj": r"^\d{4}$", 

199 "sk": r"^\d{5}\s\(\d{3}\s\d{2}\)$", 

200 "sl": r"", 

201 "sm": r"^4789\d$", 

202 "sn": r"", 

203 "so": r"", 

204 "sr": r"", 

205 "st": r"", 

206 "sv": r"^1101$", 

207 "sx": r"", 

208 "sy": r"", 

209 "sz": r"^[A-Za-z]\d{3}$", 

210 "tc": r"^[Tt][Kk][Cc][Aa]\s{0,1}[1][Zz]{2}$", 

211 "td": r"^\d{5}$", 

212 "tf": r"", 

213 "tg": r"", 

214 "th": r"^\d{5}$", 

215 "tj": r"^\d{6}$", 

216 "tk": r"", 

217 "tl": r"", 

218 "tm": r"^\d{6}$", 

219 "tn": r"^\d{4}$", 

220 "to": r"", 

221 "tr": r"^\d{5}$", 

222 "tt": r"^\d{6}$", 

223 "tv": r"", 

224 "tw": r"^\d{5}$", 

225 "tz": r"", 

226 "ua": r"^\d{5}$", 

227 "ug": r"", 

228 "us": r"^\b\d{5}\b(?:[- ]{1}\d{4})?$", 

229 "uy": r"^\d{5}$", 

230 "uz": r"^\d{3} \d{3}$", 

231 "va": r"^120$", 

232 "vc": r"^[Vv][Cc]\d{4}$", 

233 "ve": r"^\d{4}(\s[a-zA-Z]{1})?$", 

234 "vg": r"^[Vv][Gg]\d{4}$", 

235 "vi": r"^\d{5}$", 

236 "vn": r"^\d{6}$", 

237 "vu": r"", 

238 "wf": r"^986\d{2}$", 

239 "xk": r"^\d{5}$", 

240 "ye": r"", 

241 "yt": r"^976\d{2}$", 

242 "za": r"^\d{4}$", 

243 "zm": r"^\d{5}$", 

244 "zw": r"", 

245} 

246"""Provides regular expressions for validating international postal codes. 

247 

248This module contains a single dictionary, `ZIP_CODE_PATTERNS`, which maps 

249two-letter ISO 3166-1 alpha-2 country codes to their corresponding 

250raw regex string patterns. 

251 

252Empty strings (e.g., for "ae") indicate that no specific pattern is 

253available or used for that country. 

254 

255The patterns are based on the Gist by jamesbar2: 

256https://gist.github.com/jamesbar2/1c677c22df8f21e869cca7e439fc3f5b 

257"""