validates_zipcode 0.2.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +23 -43
- data/.travis.yml +9 -6
- data/Appraisals +2 -2
- data/CHANGELOG.md +34 -0
- data/README.md +69 -10
- data/gemfiles/rails_4.2.gemfile +4 -3
- data/gemfiles/rails_4.2.gemfile.lock +30 -5
- data/gemfiles/rails_5.2.gemfile +4 -3
- data/gemfiles/rails_5.2.gemfile.lock +30 -5
- data/gemfiles/rails_6.1.gemfile +8 -0
- data/gemfiles/rails_6.1.gemfile.lock +85 -0
- data/gemfiles/rails_edge.gemfile +4 -3
- data/gemfiles/rails_edge.gemfile.lock +30 -5
- data/lib/validates_zipcode.rb +12 -2
- data/lib/validates_zipcode/cldr_regex_collection.rb +94 -91
- data/lib/validates_zipcode/formatter.rb +53 -0
- data/lib/validates_zipcode/invalid_zipcode_error.rb +5 -0
- data/lib/validates_zipcode/validator.rb +8 -7
- data/lib/validates_zipcode/version.rb +1 -1
- data/lib/validates_zipcode/zipcode.rb +14 -1
- data/spec/format_zipcode_spec.rb +42 -0
- data/spec/spec_helper.rb +3566 -0
- data/spec/validates_zipcode_spec.rb +60 -353
- data/validates_zipcode.gemspec +7 -5
- metadata +47 -15
- data/gemfiles/rails_6.0.gemfile +0 -7
- data/gemfiles/rails_6.0.gemfile.lock +0 -57
data/gemfiles/rails_5.2.gemfile
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
validates_zipcode (0.
|
5
|
-
activemodel (>=
|
4
|
+
validates_zipcode (0.5.0)
|
5
|
+
activemodel (>= 4.2.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
@@ -18,12 +18,19 @@ GEM
|
|
18
18
|
bundler
|
19
19
|
rake
|
20
20
|
thor (>= 0.14.0)
|
21
|
+
ast (2.4.0)
|
21
22
|
concurrent-ruby (1.1.4)
|
22
23
|
diff-lcs (1.3)
|
23
24
|
i18n (1.5.3)
|
24
25
|
concurrent-ruby (~> 1.0)
|
25
26
|
minitest (5.11.3)
|
26
|
-
|
27
|
+
parallel (1.19.1)
|
28
|
+
parser (2.7.1.2)
|
29
|
+
ast (~> 2.4.0)
|
30
|
+
rack (2.2.2)
|
31
|
+
rainbow (3.0.0)
|
32
|
+
rake (13.0.1)
|
33
|
+
rexml (3.2.4)
|
27
34
|
rspec (3.8.0)
|
28
35
|
rspec-core (~> 3.8.0)
|
29
36
|
rspec-expectations (~> 3.8.0)
|
@@ -37,10 +44,26 @@ GEM
|
|
37
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
38
45
|
rspec-support (~> 3.8.0)
|
39
46
|
rspec-support (3.8.0)
|
47
|
+
rubocop (0.84.0)
|
48
|
+
parallel (~> 1.10)
|
49
|
+
parser (>= 2.7.0.1)
|
50
|
+
rainbow (>= 2.2.2, < 4.0)
|
51
|
+
rexml
|
52
|
+
rubocop-ast (>= 0.0.3)
|
53
|
+
ruby-progressbar (~> 1.7)
|
54
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
55
|
+
rubocop-ast (0.0.3)
|
56
|
+
parser (>= 2.7.0.1)
|
57
|
+
rubocop-rails (2.5.2)
|
58
|
+
activesupport
|
59
|
+
rack (>= 1.1)
|
60
|
+
rubocop (>= 0.72.0)
|
61
|
+
ruby-progressbar (1.10.1)
|
40
62
|
thor (0.20.3)
|
41
63
|
thread_safe (0.3.6)
|
42
64
|
tzinfo (1.2.5)
|
43
65
|
thread_safe (~> 0.1)
|
66
|
+
unicode-display_width (1.7.0)
|
44
67
|
|
45
68
|
PLATFORMS
|
46
69
|
ruby
|
@@ -49,9 +72,11 @@ DEPENDENCIES
|
|
49
72
|
activemodel (~> 5.2.0)
|
50
73
|
appraisal
|
51
74
|
bundler
|
52
|
-
rake (
|
75
|
+
rake (>= 12.3.3)
|
53
76
|
rspec
|
77
|
+
rubocop
|
78
|
+
rubocop-rails
|
54
79
|
validates_zipcode!
|
55
80
|
|
56
81
|
BUNDLED WITH
|
57
|
-
2.
|
82
|
+
2.1.4
|
@@ -0,0 +1,85 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
validates_zipcode (0.5.0)
|
5
|
+
activemodel (>= 4.2.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activemodel (6.1.3)
|
11
|
+
activesupport (= 6.1.3)
|
12
|
+
activesupport (6.1.3)
|
13
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
|
+
i18n (>= 1.6, < 2)
|
15
|
+
minitest (>= 5.1)
|
16
|
+
tzinfo (~> 2.0)
|
17
|
+
zeitwerk (~> 2.3)
|
18
|
+
appraisal (2.4.0)
|
19
|
+
bundler
|
20
|
+
rake
|
21
|
+
thor (>= 0.14.0)
|
22
|
+
ast (2.4.2)
|
23
|
+
concurrent-ruby (1.1.8)
|
24
|
+
diff-lcs (1.4.4)
|
25
|
+
i18n (1.8.9)
|
26
|
+
concurrent-ruby (~> 1.0)
|
27
|
+
minitest (5.14.4)
|
28
|
+
parallel (1.20.1)
|
29
|
+
parser (3.0.0.0)
|
30
|
+
ast (~> 2.4.1)
|
31
|
+
rack (2.2.3)
|
32
|
+
rainbow (3.0.0)
|
33
|
+
rake (13.0.3)
|
34
|
+
regexp_parser (2.1.1)
|
35
|
+
rexml (3.2.4)
|
36
|
+
rspec (3.10.0)
|
37
|
+
rspec-core (~> 3.10.0)
|
38
|
+
rspec-expectations (~> 3.10.0)
|
39
|
+
rspec-mocks (~> 3.10.0)
|
40
|
+
rspec-core (3.10.1)
|
41
|
+
rspec-support (~> 3.10.0)
|
42
|
+
rspec-expectations (3.10.1)
|
43
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
44
|
+
rspec-support (~> 3.10.0)
|
45
|
+
rspec-mocks (3.10.2)
|
46
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
47
|
+
rspec-support (~> 3.10.0)
|
48
|
+
rspec-support (3.10.2)
|
49
|
+
rubocop (1.11.0)
|
50
|
+
parallel (~> 1.10)
|
51
|
+
parser (>= 3.0.0.0)
|
52
|
+
rainbow (>= 2.2.2, < 4.0)
|
53
|
+
regexp_parser (>= 1.8, < 3.0)
|
54
|
+
rexml
|
55
|
+
rubocop-ast (>= 1.2.0, < 2.0)
|
56
|
+
ruby-progressbar (~> 1.7)
|
57
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
58
|
+
rubocop-ast (1.4.1)
|
59
|
+
parser (>= 2.7.1.5)
|
60
|
+
rubocop-rails (2.9.1)
|
61
|
+
activesupport (>= 4.2.0)
|
62
|
+
rack (>= 1.1)
|
63
|
+
rubocop (>= 0.90.0, < 2.0)
|
64
|
+
ruby-progressbar (1.11.0)
|
65
|
+
thor (1.1.0)
|
66
|
+
tzinfo (2.0.4)
|
67
|
+
concurrent-ruby (~> 1.0)
|
68
|
+
unicode-display_width (2.0.0)
|
69
|
+
zeitwerk (2.4.2)
|
70
|
+
|
71
|
+
PLATFORMS
|
72
|
+
ruby
|
73
|
+
|
74
|
+
DEPENDENCIES
|
75
|
+
activemodel (~> 6.1.0)
|
76
|
+
appraisal
|
77
|
+
bundler
|
78
|
+
rake (>= 12.3.3)
|
79
|
+
rspec
|
80
|
+
rubocop
|
81
|
+
rubocop-rails
|
82
|
+
validates_zipcode!
|
83
|
+
|
84
|
+
BUNDLED WITH
|
85
|
+
2.1.4
|
data/gemfiles/rails_edge.gemfile
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# This file was generated by Appraisal
|
2
3
|
|
3
|
-
source
|
4
|
+
source 'https://rubygems.org'
|
4
5
|
|
5
|
-
gem
|
6
|
+
gem 'activemodel', github: 'rails/rails'
|
6
7
|
|
7
|
-
gemspec path:
|
8
|
+
gemspec path: '../'
|
@@ -14,8 +14,8 @@ GIT
|
|
14
14
|
PATH
|
15
15
|
remote: ..
|
16
16
|
specs:
|
17
|
-
validates_zipcode (0.
|
18
|
-
activemodel (>=
|
17
|
+
validates_zipcode (0.5.0)
|
18
|
+
activemodel (>= 4.2.0)
|
19
19
|
|
20
20
|
GEM
|
21
21
|
remote: https://rubygems.org/
|
@@ -24,12 +24,19 @@ GEM
|
|
24
24
|
bundler
|
25
25
|
rake
|
26
26
|
thor (>= 0.14.0)
|
27
|
+
ast (2.4.0)
|
27
28
|
concurrent-ruby (1.1.5)
|
28
29
|
diff-lcs (1.3)
|
29
30
|
i18n (1.6.0)
|
30
31
|
concurrent-ruby (~> 1.0)
|
31
32
|
minitest (5.11.3)
|
32
|
-
|
33
|
+
parallel (1.19.1)
|
34
|
+
parser (2.7.1.2)
|
35
|
+
ast (~> 2.4.0)
|
36
|
+
rack (2.2.2)
|
37
|
+
rainbow (3.0.0)
|
38
|
+
rake (13.0.1)
|
39
|
+
rexml (3.2.4)
|
33
40
|
rspec (3.8.0)
|
34
41
|
rspec-core (~> 3.8.0)
|
35
42
|
rspec-expectations (~> 3.8.0)
|
@@ -43,10 +50,26 @@ GEM
|
|
43
50
|
diff-lcs (>= 1.2.0, < 2.0)
|
44
51
|
rspec-support (~> 3.8.0)
|
45
52
|
rspec-support (3.8.0)
|
53
|
+
rubocop (0.84.0)
|
54
|
+
parallel (~> 1.10)
|
55
|
+
parser (>= 2.7.0.1)
|
56
|
+
rainbow (>= 2.2.2, < 4.0)
|
57
|
+
rexml
|
58
|
+
rubocop-ast (>= 0.0.3)
|
59
|
+
ruby-progressbar (~> 1.7)
|
60
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
61
|
+
rubocop-ast (0.0.3)
|
62
|
+
parser (>= 2.7.0.1)
|
63
|
+
rubocop-rails (2.5.2)
|
64
|
+
activesupport
|
65
|
+
rack (>= 1.1)
|
66
|
+
rubocop (>= 0.72.0)
|
67
|
+
ruby-progressbar (1.10.1)
|
46
68
|
thor (0.20.3)
|
47
69
|
thread_safe (0.3.6)
|
48
70
|
tzinfo (1.2.5)
|
49
71
|
thread_safe (~> 0.1)
|
72
|
+
unicode-display_width (1.7.0)
|
50
73
|
zeitwerk (2.1.6)
|
51
74
|
|
52
75
|
PLATFORMS
|
@@ -56,9 +79,11 @@ DEPENDENCIES
|
|
56
79
|
activemodel!
|
57
80
|
appraisal
|
58
81
|
bundler
|
59
|
-
rake (
|
82
|
+
rake (>= 12.3.3)
|
60
83
|
rspec
|
84
|
+
rubocop
|
85
|
+
rubocop-rails
|
61
86
|
validates_zipcode!
|
62
87
|
|
63
88
|
BUNDLED WITH
|
64
|
-
2.
|
89
|
+
2.1.4
|
data/lib/validates_zipcode.rb
CHANGED
@@ -1,13 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'validates_zipcode/railtie' if defined?(Rails)
|
3
3
|
require 'validates_zipcode/cldr_regex_collection'
|
4
|
+
require 'validates_zipcode/invalid_zipcode_error'
|
4
5
|
require 'validates_zipcode/validator'
|
5
6
|
require 'validates_zipcode/helper_methods'
|
6
7
|
require 'validates_zipcode/version'
|
7
8
|
require 'validates_zipcode/zipcode'
|
9
|
+
require 'validates_zipcode/formatter'
|
8
10
|
|
9
11
|
module ValidatesZipcode
|
10
|
-
def self.valid?(
|
11
|
-
|
12
|
+
def self.valid?(*args)
|
13
|
+
build_zipcode(*args).valid?
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.format(*args)
|
17
|
+
build_zipcode(*args).format
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.build_zipcode(zipcode, country_alpha2, options = {})
|
21
|
+
ValidatesZipcode::Zipcode.new(options.merge(zipcode: zipcode, country_alpha2: country_alpha2))
|
12
22
|
end
|
13
23
|
end
|
@@ -9,9 +9,9 @@ module ValidatesZipcode
|
|
9
9
|
UK: /\AGIR ?0AA|((([A-Z]\d{1,2})|(([A-Z][A-HJ-Y]\d{1,2})|(([A-Z]\d[A-Z])|([A-Z][A-HJ-Y]\d?[A-Z])))) ?\d[A-Z]{2})\z/i,
|
10
10
|
# GB: /\AGIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4}\z/i,
|
11
11
|
# UK: /\A([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)\z/,
|
12
|
-
JE: /\AJE\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}\z
|
13
|
-
GG: /\AGY\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}\z
|
14
|
-
IM: /\AIM\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}\z
|
12
|
+
JE: /\AJE\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}\z/i,
|
13
|
+
GG: /\AGY\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}\z/i,
|
14
|
+
IM: /\AIM\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}\z/i,
|
15
15
|
US: /\A\d{5}([ \-](?:\d{4}|\d{6}))?\z/,
|
16
16
|
IE: /\A([AC-FHKNPRTV-Y]\d{2}|D6W)\s?[0-9AC-FHKNPRTV-Y]{4}\z/,
|
17
17
|
CA: /\A[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][ ]?\d[ABCEGHJ-NPRSTV-Z]\d\z/,
|
@@ -21,7 +21,7 @@ module ValidatesZipcode
|
|
21
21
|
CH: /\A\d{4}\z/,
|
22
22
|
AT: /\A\d{4}\z/,
|
23
23
|
ES: /\A\d{5}\z/,
|
24
|
-
NL: /\A\d{
|
24
|
+
NL: /\A[1-9]\d{3}[ ]?(S[BCE-RT-Z]|[A-RT-Z][A-Z])\z/,
|
25
25
|
BE: /\A\d{4}\z/,
|
26
26
|
DK: /\A\d{4}\z/,
|
27
27
|
NO: /\A\d{4}\z/,
|
@@ -32,16 +32,15 @@ module ValidatesZipcode
|
|
32
32
|
SG: /\A\d{6}\z/,
|
33
33
|
DZ: /\A\d{5}\z/,
|
34
34
|
AD: /\AAD\d{3}\z/,
|
35
|
-
AR: /\A
|
36
|
-
# AR: /\A([A-HJ-NP-Z])?\d{4}([A-Z]{3})?\z/,
|
35
|
+
AR: /\A[A-HJ-NP-Z]{1}\d{4}([A-Z]{3})?\z/,
|
37
36
|
AM: /\A(37)?\d{4}\z/,
|
38
|
-
BH: /\A(
|
37
|
+
BH: /\A(1[0-2]|[1-9])\d{2}\z/,
|
39
38
|
BD: /\A\d{4}\z/,
|
40
|
-
BB: /\
|
39
|
+
BB: /\ABB([1-2]\d{4}|15156667)\z/,
|
41
40
|
BY: /\A\d{6}\z/,
|
42
41
|
BM: /\A[A-Z]{2}[ ]?[A-Z0-9]{2}\z/,
|
43
42
|
BA: /\A\d{5}\z/,
|
44
|
-
BN: /\A[A-Z]
|
43
|
+
BN: /\A[BKTP][A-Z][ ]?\d{4}\z/i,
|
45
44
|
BG: /\A\d{4}\z/,
|
46
45
|
KH: /\A\d{5}\z/,
|
47
46
|
CV: /\A\d{4}\z/,
|
@@ -50,7 +49,7 @@ module ValidatesZipcode
|
|
50
49
|
CY: /\A\d{4}\z/,
|
51
50
|
CZ: /\A[1-7][0-9]{2}[ ]?\d{2}\z/,
|
52
51
|
DO: /\A\d{5}\z/,
|
53
|
-
EC: /\A
|
52
|
+
EC: /\A\d{6}\z/,
|
54
53
|
EE: /\A\d{5}\z/,
|
55
54
|
FO: /\A\d{3}\z/,
|
56
55
|
GE: /\A\d{4}\z/,
|
@@ -61,29 +60,29 @@ module ValidatesZipcode
|
|
61
60
|
IS: /\A\d{3}\z/,
|
62
61
|
IN: /\A\d{6}\z/,
|
63
62
|
ID: /\A\d{5}\z/,
|
64
|
-
IL: /\A\d{5
|
63
|
+
IL: /\A(\d{5}|\d{7})\z/,
|
65
64
|
JO: /\A\d{5}\z/,
|
66
65
|
KZ: /\A\d{6}\z/,
|
67
66
|
KE: /\A\d{5}\z/,
|
68
67
|
KW: /\A\d{5}\z/,
|
69
68
|
LA: /\A\d{5}\z/,
|
70
69
|
LB: /\A(\d{4}([ ]?\d{4})?)?\z/,
|
71
|
-
LU: /\A(L\-)?\d{4}\z/,
|
70
|
+
LU: /\A(L[\- ]?)?\d{4}\z/,
|
72
71
|
MK: /\A\d{4}\z/,
|
73
72
|
MY: /\A\d{5}\z/,
|
74
73
|
MV: /\A\d{5}\z/,
|
75
|
-
MT: /\A[A-Z]{3}[ ]?\d{2,4}\z
|
76
|
-
MU: /\A[
|
74
|
+
MT: /\A[A-Z]{3}[ ]?\d{2,4}\z/i,
|
75
|
+
MU: /\A[AR1-9]\d{4}\z/i,
|
77
76
|
MX: /\A\d{5}\z/,
|
78
77
|
MA: /\A\d{5}\z/,
|
79
78
|
NZ: /\A\d{4}\z/,
|
80
79
|
NI: /\A\d{5}\z/,
|
81
|
-
NG: /\A
|
82
|
-
OM: /\A(PC )?\d{3}\z
|
80
|
+
NG: /\A\d{6}\z/,
|
81
|
+
OM: /\A(PC )?\d{3}\z/i,
|
83
82
|
PK: /\A\d{5}\z/,
|
84
83
|
PY: /\A\d{4}\z/,
|
85
84
|
PH: /\A\d{4}\z/,
|
86
|
-
PL: /\A\d{2}
|
85
|
+
PL: /\A\d{2}[ -]?\d{3}\z/,
|
87
86
|
PR: /\A00[679]\d{2}([ \-]\d{4})?\z/,
|
88
87
|
RO: /\A\d{6}\z/,
|
89
88
|
RU: /\A\d{6}\z/,
|
@@ -111,13 +110,13 @@ module ValidatesZipcode
|
|
111
110
|
YU: /\A\d{5}\z/,
|
112
111
|
CX: /\A6798\z/,
|
113
112
|
ET: /\A\d{4}\z/,
|
114
|
-
FK: /\AFIQQ 1ZZ\z
|
113
|
+
FK: /\AFIQQ[ ]?1ZZ\z/i,
|
115
114
|
NF: /\A2899\z/,
|
116
115
|
FM: /\A(9694[1-4])([ \-]\d{4})?\z/,
|
117
116
|
GF: /\A9[78]3\d{2}\z/,
|
118
117
|
GP: /\A9[78][01]\d{2}\z/,
|
119
|
-
GS: /\ASIQQ 1ZZ\z
|
120
|
-
GU: /\A969[
|
118
|
+
GS: /\ASIQQ[ ]?1ZZ\z/i,
|
119
|
+
GU: /\A969[1-3]\d([ \-]\d{4})?\z/,
|
121
120
|
GW: /\A\d{4}\z/,
|
122
121
|
HM: /\A\d{4}\z/,
|
123
122
|
IQ: /\A\d{5}\z/,
|
@@ -133,117 +132,121 @@ module ValidatesZipcode
|
|
133
132
|
PF: /\A987\d{2}\z/,
|
134
133
|
PG: /\A\d{3}\z/,
|
135
134
|
PM: /\A9[78]5\d{2}\z/,
|
136
|
-
PN: /\APCRN 1ZZ\z
|
135
|
+
PN: /\APCRN[ ]?1ZZ\z/i,
|
137
136
|
PW: /\A96940\z/,
|
138
|
-
RE: /\
|
139
|
-
SH: /\A(ASCN|STHL) 1ZZ\z
|
137
|
+
RE: /\A974\d{2}\z/,
|
138
|
+
SH: /\A(ASCN|STHL|TDCU)[ ]?1ZZ\z/i,
|
140
139
|
SJ: /\A\d{4}\z/,
|
141
|
-
SZ: /\A[HLMS]\d{3}\z
|
142
|
-
TC: /\ATKCA 1ZZ\z
|
140
|
+
SZ: /\A[HLMS]\d{3}\z/i,
|
141
|
+
TC: /\ATKCA[ ]?1ZZ\z/i,
|
143
142
|
WF: /\A986\d{2}\z/,
|
144
143
|
XK: /\A\d{5}\z/,
|
145
144
|
YT: /\A976\d{2}\z/,
|
146
145
|
# NOTE: UAE has no postal codes
|
147
146
|
# https://github.com/dgilperez/validates_zipcode/issues/28
|
148
|
-
# AE: /\A([
|
147
|
+
# AE: /\A([A-Z\d\s]){3,}\z/i,
|
149
148
|
AF: /\A\d{4}\z/,
|
150
149
|
AL: /\A\d{4}\z/,
|
151
|
-
AG: /\A([
|
152
|
-
AO: /\A([
|
153
|
-
AZ: /\A([
|
154
|
-
BF: /\A([
|
155
|
-
BI: /\A([
|
156
|
-
BS: /\A([
|
157
|
-
BZ: /\A([
|
150
|
+
AG: /\A([A-Z\d\s]){3,}\z/i,
|
151
|
+
AO: /\A([A-Z\d\s]){3,}\z/i,
|
152
|
+
AZ: /\A(AZ[ ]?)?\d{4}\z/i,
|
153
|
+
BF: /\A([A-Z\d\s]){3,}\z/i,
|
154
|
+
BI: /\A([A-Z\d\s]){3,}\z/i,
|
155
|
+
BS: /\A([A-Z\d\s]){3,}\z/i,
|
156
|
+
BZ: /\A([A-Z\d\s]){3,}\z/i,
|
158
157
|
BR: /\A\d{5}(-?\d{3})?\z/,
|
159
|
-
BJ: /\A([
|
158
|
+
BJ: /\A([A-Z\d\s]){3,}\z/i,
|
160
159
|
BT: /\A\d{5}\z/,
|
161
|
-
BQ: /\A([
|
160
|
+
BQ: /\A([A-Z\d\s]){3,}\z/i,
|
162
161
|
BO: /\A\d{4}\z/,
|
163
|
-
BW: /\A([
|
164
|
-
CF: /\A([
|
165
|
-
CG: /\A([
|
166
|
-
CI: /\A([
|
167
|
-
|
168
|
-
|
162
|
+
BW: /\A([A-Z\d\s]){3,}\z/i,
|
163
|
+
CF: /\A([A-Z\d\s]){3,}\z/i,
|
164
|
+
CG: /\A([A-Z\d\s]){3,}\z/i,
|
165
|
+
CI: /\A([A-Z\d\s]){3,}\z/i,
|
166
|
+
# NOTE: Cameroon has no postal codes
|
167
|
+
# CM: /\A([A-Z\d]){3,7}\z/i,
|
168
|
+
CO: /\A([A-Z\d\s]){3,}\z/i,
|
169
169
|
CR: /\A\d{5}\z/,
|
170
170
|
CU: /\A\d{5}\z/,
|
171
|
-
KM: /\A([
|
172
|
-
DJ: /\A([
|
173
|
-
DM: /\A([
|
174
|
-
EG: /\A([
|
175
|
-
GQ: /\A([
|
171
|
+
KM: /\A([A-Z\d\s]){3,}\z/i,
|
172
|
+
DJ: /\A([A-Z\d\s]){3,}\z/i,
|
173
|
+
DM: /\A([A-Z\d\s]){3,}\z/i,
|
174
|
+
EG: /\A([A-Z\d\s]){3,}\z/i,
|
175
|
+
GQ: /\A([A-Z\d\s]){3,}\z/i,
|
176
176
|
EL: /\A\d{5}\z/,
|
177
|
-
ER: /\A([
|
178
|
-
FJ: /\A([
|
177
|
+
ER: /\A([A-Z\d\s]){3,}\z/i,
|
178
|
+
FJ: /\A([A-Z\d\s]){3,}\z/i,
|
179
179
|
FR: /\A\d{5}\z/,
|
180
|
-
GA: /\A\d{
|
181
|
-
GD: /\A([
|
182
|
-
GH: /\A([
|
183
|
-
GM: /\A([
|
184
|
-
GN: /\A([
|
185
|
-
GI: /\A(GX11 1AA)\z
|
180
|
+
GA: /\A\d{4}\z/,
|
181
|
+
GD: /\A([A-Z\d\s]){3,}\z/i,
|
182
|
+
GH: /\A([A-Z\d\s]){3,}\z/i,
|
183
|
+
GM: /\A([A-Z\d\s]){3,}\z/i,
|
184
|
+
GN: /\A([A-Z\d\s]){3,}\z/i,
|
185
|
+
GI: /\A(GX11[ ]?1AA)\z/i,
|
186
186
|
GR: /\A\d{3}[ ]?\d{2}\z/,
|
187
|
-
GY: /\A([
|
188
|
-
HN: /\A(([
|
187
|
+
GY: /\A([A-Z\d\s]){3,}\z/i,
|
188
|
+
HN: /\A(([A-Z]){2}|\d{2})\d{4}\z/i,
|
189
189
|
IO: /\A\d{5}\z/,
|
190
190
|
IR: /\A\d{5}\z/,
|
191
191
|
JP: /\A\d{3}\-?\d{4}\z/,
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
192
|
+
# Jamaica has no postcode system.However, for Kingston, there are one- and two-digit sector codes.
|
193
|
+
# On February 12, 2007 it was announced: "POST CODE PROJECT SUSPENDED INDEFINITELY"
|
194
|
+
# https://en.youbianku.com/Jamaica#:~:text=Jamaica%20has%20no%20postcode%20system,the%20name%20of%20the%20town.
|
195
|
+
JM: /\A((JM(DCN|CHR|AKN|DMR|BPD|AAW|CAN|ACE|DEH|CJS|BMY|BTS|CTY|DWD)(0[1-9]|[1-2]\d))|\d{1,2})?\z/i,
|
196
|
+
KI: /\AKI0[1-3]\d{2}\z/i,
|
197
|
+
KN: /\AKN[ ]?\d{4}\z/i,
|
198
|
+
KP: /\A([A-Z\d\s]){3,8}\z/i,
|
196
199
|
LI: /\A\d{4}\z/,
|
197
|
-
LV: /\A(LV)
|
200
|
+
LV: /\A(LV[\- ]?)?\d{4}\z/i,
|
198
201
|
LY: /\A\d{5}\z/,
|
199
|
-
LT: /\A(LT
|
200
|
-
LC: /\A([
|
202
|
+
LT: /\A(LT[\- ]?)?\d{5}\z/i,
|
203
|
+
LC: /\A([A-Z\d\s]){3,}\z/i,
|
201
204
|
MC: /\A\d{5}\z/,
|
202
|
-
MD: /\A(([
|
203
|
-
ME: /\A([
|
205
|
+
MD: /\A(([A-Z]){2})(|\s)\d{4}\z/i,
|
206
|
+
ME: /\A([A-Z\d\s]){3,}\z/i,
|
204
207
|
MH: /\A\d{5}\z/,
|
205
|
-
MR: /\A([
|
206
|
-
MM: /\A([
|
207
|
-
MW: /\A([
|
208
|
+
MR: /\A([A-Z\d\s]){3,}\z/i,
|
209
|
+
MM: /\A([A-Z\d\s]){3,}\z/i,
|
210
|
+
MW: /\A([A-Z\d\s]){3,}\z/i,
|
208
211
|
MZ: /\A\d{4}\z/,
|
209
212
|
NA: /\A\d{5}\z/,
|
210
213
|
NP: /\A\d{6}\z/,
|
211
|
-
NR: /\A([
|
214
|
+
NR: /\A([A-Z\d\s]){3,}\z/i,
|
212
215
|
PT: /\A\d{4}([\-]\d{3})?\z/,
|
213
216
|
PS: /\A\d{3}\z/,
|
214
217
|
PA: /\A\d{4}\z/,
|
215
218
|
PE: /\A\d{5}\z/,
|
216
|
-
QA: /\A([
|
217
|
-
RW: /\A([
|
218
|
-
SC: /\A([
|
219
|
+
QA: /\A([A-Z\d\s]){3,}\z/i,
|
220
|
+
RW: /\A([A-Z\d\s]){3,}\z/i,
|
221
|
+
SC: /\A([A-Z\d\s]){3,}\z/i,
|
219
222
|
SE: /\A\d{3}[ ]?\d{2}\z/,
|
220
223
|
SK: /\A[089]\d{2}[ ]?\d{2}\z/,
|
221
|
-
SL: /\A([
|
222
|
-
SB: /\A([
|
223
|
-
SR: /\A([
|
224
|
-
SO: /\A([
|
225
|
-
SV: /\A([
|
224
|
+
SL: /\A([A-Z\d\s]){3,}\z/i,
|
225
|
+
SB: /\A([A-Z\d\s]){3,}\z/i,
|
226
|
+
SR: /\A([A-Z\d\s]){3,}\z/i,
|
227
|
+
SO: /\A([A-Z\d\s]){3,}\z/i,
|
228
|
+
SV: /\A([A-Z\d\s]){3,}\z/i,
|
226
229
|
SD: /\A\d{5}\z/,
|
227
|
-
ST: /\A([
|
228
|
-
SY: /\A([
|
230
|
+
ST: /\A([A-Z\d\s]){3,}\z/i,
|
231
|
+
SY: /\A([A-Z\d\s]){3,}\z/i,
|
229
232
|
SS: /\A\d{5}\z/,
|
230
233
|
TD: /\A\d{5}\z/,
|
231
|
-
TG: /\A([
|
232
|
-
TO: /\A([
|
233
|
-
TZ: /\A([
|
234
|
+
TG: /\A([A-Z\d\s]){3,}\z/i,
|
235
|
+
TO: /\A([A-Z\d\s]){3,}\z/i,
|
236
|
+
TZ: /\A([A-Z\d\s]){3,}\z/i,
|
234
237
|
TT: /\A\d{6}\z/,
|
235
238
|
TW: /\A\d{3}(\d{2})?\z/,
|
236
|
-
UG: /\A([
|
237
|
-
UM: /\A([
|
238
|
-
UY: /\A([
|
239
|
-
VC: /\A(VC)\d{4}\z
|
239
|
+
UG: /\A([A-Z\d\s]){3,}\z/i,
|
240
|
+
UM: /\A([A-Z\d\s]){3,}\z/i,
|
241
|
+
UY: /\A([A-Z\d\s]){3,}\z/i,
|
242
|
+
VC: /\A(VC)\d{4}\z/i,
|
240
243
|
VI: /\A\d{5}\z/,
|
241
|
-
VG: /\A([
|
244
|
+
VG: /\A([A-Z\d\s]){3,}\z/i,
|
242
245
|
VN: /\A\d{6}\z/,
|
243
|
-
VU: /\A([
|
244
|
-
WS: /\A([
|
245
|
-
YE: /\A([
|
246
|
-
ZW: /\A([
|
246
|
+
VU: /\A([A-Z\d\s]){3,}\z/i,
|
247
|
+
WS: /\A([A-Z\d\s]){3,}\z/i,
|
248
|
+
YE: /\A([A-Z\d\s]){3,}\z/i,
|
249
|
+
ZW: /\A([A-Z\d\s]){3,}\z/i
|
247
250
|
}.freeze
|
248
251
|
|
249
252
|
def regexp_for_country_alpha2(alpha2)
|