vehicles 0.6.1 → 0.8.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/.rubocop_todo.yml +164 -0
- data/CHANGELOG.md +274 -0
- data/README.md +55 -10
- data/data/PROVENANCE-vehicles.md +12 -0
- data/data/plates/PROVENANCE.md +5 -4
- data/data/plates/_decode/at-districts.yml +287 -0
- data/data/plates/_decode/ch-cantons.yml +110 -0
- data/data/plates/_decode/cn-issuing-offices.yml +463 -0
- data/data/plates/_decode/cn-provinces.yml +614 -0
- data/data/plates/_decode/cz-kraj.yml +159 -0
- data/data/plates/_decode/dk-serial-blocks.yml +327 -0
- data/data/plates/_decode/fr-departements.yml +191 -0
- data/data/plates/_decode/gb-age-identifiers.yml +170 -0
- data/data/plates/_decode/gb-memory-tags.yml +202 -0
- data/data/plates/_decode/gr-prefectures.yml +1408 -0
- data/data/plates/_decode/hr-cities.yml +315 -0
- data/data/plates/_decode/ie-counties.yml +227 -0
- data/data/plates/_decode/in-state-codes.yml +169 -0
- data/data/plates/_decode/is-districts-1938.yml +116 -0
- data/data/plates/_decode/it-provinces.yml +348 -0
- data/data/plates/_decode/jp-office-marks.yml +960 -0
- data/data/plates/_decode/jp-use-marks.yml +205 -0
- data/data/plates/_decode/kr-authority-marks.yml +146 -0
- data/data/plates/_decode/kr-use-syllables.yml +194 -0
- data/data/plates/_decode/lu-series-order.yml +638 -0
- data/data/plates/_decode/mx-entity-series.yml +380 -0
- data/data/plates/_decode/my-index-marks.yml +271 -0
- data/data/plates/_decode/no-counties-1913.yml +148 -0
- data/data/plates/_decode/no-districts.yml +901 -0
- data/data/plates/_decode/pl-powiats.yml +567 -0
- data/data/plates/_decode/pt-trailer-services.yml +96 -0
- data/data/plates/_decode/ro-counties.yml +213 -0
- data/data/plates/_decode/se-diplomatic.yml +220 -0
- data/data/plates/_decode/si-regions.yml +123 -0
- data/data/plates/_decode/sk-districts.yml +314 -0
- data/data/plates/_decode/th-registration-elements.yml +208 -0
- data/data/plates/_decode/ua-regions.yml +393 -0
- data/data/plates/_decode/za-licence-marks.yml +215 -0
- data/data/plates/_meta/classes.yml +1 -0
- data/data/plates/_meta/separators.yml +102 -0
- data/data/plates/ad.yml +961 -0
- data/data/plates/ar.yml +762 -0
- data/data/plates/at.yml +1424 -0
- data/data/plates/au-act.yml +472 -0
- data/data/plates/au-nsw.yml +282 -0
- data/data/plates/au-nt.yml +431 -0
- data/data/plates/au-qld.yml +272 -0
- data/data/plates/au-sa.yml +248 -0
- data/data/plates/au-tas.yml +302 -0
- data/data/plates/au-vic.yml +215 -0
- data/data/plates/au-wa.yml +309 -0
- data/data/plates/be.yml +1840 -0
- data/data/plates/br.yml +1152 -0
- data/data/plates/ca-ab.yml +430 -0
- data/data/plates/ca-bc.yml +697 -0
- data/data/plates/ca-mb.yml +499 -0
- data/data/plates/ca-nb.yml +537 -0
- data/data/plates/ca-nl.yml +743 -0
- data/data/plates/ca-ns.yml +808 -0
- data/data/plates/ca-nt.yml +610 -0
- data/data/plates/ca-nu.yml +280 -0
- data/data/plates/ca-on.yml +881 -0
- data/data/plates/ca-pe.yml +592 -0
- data/data/plates/ca-qc.yml +1036 -0
- data/data/plates/ca-sk.yml +256 -0
- data/data/plates/ca-yt.yml +656 -0
- data/data/plates/ch.yml +1273 -0
- data/data/plates/cn.yml +1431 -0
- data/data/plates/cy.yml +688 -0
- data/data/plates/cz.yml +1179 -0
- data/data/plates/de.yml +553 -118
- data/data/plates/dk.yml +1647 -0
- data/data/plates/ee.yml +1275 -0
- data/data/plates/es.yml +228 -32
- data/data/plates/fi.yml +1271 -0
- data/data/plates/fr.yml +1265 -0
- data/data/plates/gb.yml +1188 -0
- data/data/plates/gr.yml +721 -0
- data/data/plates/hr.yml +860 -0
- data/data/plates/hu.yml +959 -0
- data/data/plates/ie.yml +775 -0
- data/data/plates/in.yml +1172 -0
- data/data/plates/is.yml +667 -0
- data/data/plates/it.yml +1317 -0
- data/data/plates/jp.yml +3650 -0
- data/data/plates/kr.yml +1375 -0
- data/data/plates/li.yml +1010 -0
- data/data/plates/lt.yml +879 -0
- data/data/plates/lu.yml +842 -0
- data/data/plates/lv.yml +924 -0
- data/data/plates/mc.yml +1024 -0
- data/data/plates/mt.yml +854 -0
- data/data/plates/mx.yml +1372 -0
- data/data/plates/my.yml +685 -0
- data/data/plates/nl.yml +44 -0
- data/data/plates/no.yml +1018 -0
- data/data/plates/nz.yml +1699 -0
- data/data/plates/pl.yml +1296 -0
- data/data/plates/pt.yml +847 -0
- data/data/plates/ro.yml +785 -0
- data/data/plates/se.yml +1091 -0
- data/data/plates/si.yml +1105 -0
- data/data/plates/sk.yml +1439 -0
- data/data/plates/sm.yml +1119 -0
- data/data/plates/th.yml +1150 -0
- data/data/plates/ua.yml +1672 -0
- data/data/plates/us-ak.yml +763 -0
- data/data/plates/us-al.yml +457 -0
- data/data/plates/us-ar.yml +427 -0
- data/data/plates/us-as.yml +454 -0
- data/data/plates/us-az.yml +430 -0
- data/data/plates/us-ca.yml +892 -0
- data/data/plates/us-co.yml +452 -0
- data/data/plates/us-ct.yml +427 -0
- data/data/plates/us-dc.yml +614 -0
- data/data/plates/us-de.yml +551 -0
- data/data/plates/us-fl.yml +319 -96
- data/data/plates/us-ga.yml +644 -0
- data/data/plates/us-gu.yml +658 -0
- data/data/plates/us-hi.yml +585 -0
- data/data/plates/us-ia.yml +438 -0
- data/data/plates/us-id.yml +531 -0
- data/data/plates/us-il.yml +516 -0
- data/data/plates/us-in.yml +324 -0
- data/data/plates/us-ks.yml +351 -0
- data/data/plates/us-ky.yml +770 -0
- data/data/plates/us-la.yml +568 -0
- data/data/plates/us-ma.yml +379 -0
- data/data/plates/us-md.yml +536 -0
- data/data/plates/us-me.yml +445 -0
- data/data/plates/us-mi.yml +408 -0
- data/data/plates/us-mn.yml +411 -0
- data/data/plates/us-mo.yml +356 -0
- data/data/plates/us-mp.yml +402 -0
- data/data/plates/us-ms.yml +432 -0
- data/data/plates/us-mt.yml +619 -0
- data/data/plates/us-nc.yml +602 -0
- data/data/plates/us-nd.yml +419 -0
- data/data/plates/us-ne.yml +483 -0
- data/data/plates/us-nh.yml +394 -0
- data/data/plates/us-nj.yml +547 -0
- data/data/plates/us-nm.yml +574 -0
- data/data/plates/us-nv.yml +655 -0
- data/data/plates/us-ny.yml +592 -0
- data/data/plates/us-oh.yml +404 -0
- data/data/plates/us-ok.yml +513 -0
- data/data/plates/us-or.yml +392 -0
- data/data/plates/us-pa.yml +506 -0
- data/data/plates/us-pr.yml +507 -0
- data/data/plates/us-ri.yml +445 -0
- data/data/plates/us-sc.yml +605 -0
- data/data/plates/us-sd.yml +428 -0
- data/data/plates/us-tn.yml +471 -0
- data/data/plates/us-tx.yml +535 -0
- data/data/plates/us-ut.yml +384 -0
- data/data/plates/us-va.yml +567 -0
- data/data/plates/us-vi.yml +489 -0
- data/data/plates/us-vt.yml +458 -0
- data/data/plates/us-wa.yml +484 -0
- data/data/plates/us-wi.yml +509 -0
- data/data/plates/us-wv.yml +446 -0
- data/data/plates/us-wy.yml +523 -0
- data/data/plates/va.yml +604 -0
- data/data/plates/za.yml +1141 -0
- data/data/vehicles.json +160653 -105090
- data/lib/vehicles/configuration.rb +17 -3
- data/lib/vehicles/dataset.rb +73 -18
- data/lib/vehicles/fuzzy.rb +115 -0
- data/lib/vehicles/http.rb +48 -0
- data/lib/vehicles/make.rb +36 -6
- data/lib/vehicles/mcp_server.rb +5 -5
- data/lib/vehicles/model.rb +21 -2
- data/lib/vehicles/plates/series.rb +172 -18
- data/lib/vehicles/plates/template_fill.rb +188 -0
- data/lib/vehicles/plates/templates.rb +162 -0
- data/lib/vehicles/plates.rb +12 -0
- data/lib/vehicles/providers/hosted_provider.rb +28 -55
- data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
- data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
- data/lib/vehicles/version.rb +1 -1
- data/lib/vehicles.rb +32 -16
- data/rakelib/data_refresh.rake +109 -0
- data/rakelib/plates_refresh.rake +29 -0
- data/sig/vehicles.rbs +18 -0
- metadata +164 -2
data/data/plates/za.yml
ADDED
|
@@ -0,0 +1,1141 @@
|
|
|
1
|
+
# plates/za.yml — South Africa (PRD-PLATES gate L3).
|
|
2
|
+
#
|
|
3
|
+
# EVERY grammar claim in this file comes from ONE regulation — regulation 27
|
|
4
|
+
# of the National Road Traffic Regulations, 2000 (GNR.225 of 17 March 2000),
|
|
5
|
+
# made by the Minister of Transport under s. 75 of the National Road Traffic
|
|
6
|
+
# Act 93 of 1996 — and every colour, layout and dimension claim from
|
|
7
|
+
# regulation 35 of the same instrument. Both were read in the consolidated
|
|
8
|
+
# regulations (consolidated to GNR.359 of 2 May 2010) and again, word for
|
|
9
|
+
# word, in a Government Gazette reproduction (GG 37542, General Notice 287 of
|
|
10
|
+
# 9 April 2014). The Free State design and personalised-number claims come
|
|
11
|
+
# from that province's own gazette notices, fetched in full.
|
|
12
|
+
#
|
|
13
|
+
# SIX STRUCTURAL FACTS THAT SHAPE THIS FILE
|
|
14
|
+
#
|
|
15
|
+
# 1. SOUTH AFRICA HAS ONE STATUTORY GRAMMAR AND NINE ISSUING PROVINCES, AND
|
|
16
|
+
# THE GRAMMAR IS SMALL, CLOSED AND DIRECTLY REGEX-ABLE. Reg 27(2)(a),
|
|
17
|
+
# verbatim: the MEC of a province shall "(i) allocate a licence mark to
|
|
18
|
+
# every registering authority in the province concerned, which licence mark
|
|
19
|
+
# shall consist of a combination of letters; or (ii) establish a licence
|
|
20
|
+
# number system for the province concerned which license number system
|
|
21
|
+
# shall consist of: (aa) a combination of three letters and three figures
|
|
22
|
+
# in any sequence; or (bb) a combination of two letters, two figures and
|
|
23
|
+
# two letters in any sequence: and the licence mark of the province
|
|
24
|
+
# concerned, referred to in sub regulation (1)". That is the whole of the
|
|
25
|
+
# ordinary South African plate: EITHER a town code followed by figures, OR
|
|
26
|
+
# a national serial shape followed by a two- or one-letter provincial mark.
|
|
27
|
+
# Everything else in this file is a reg 27(5) or reg 71(2) special class.
|
|
28
|
+
#
|
|
29
|
+
# 2. THE CHARSET IS STATUTORY AND IT IS THE PROVISO TO REG 27(2)(a)(ii),
|
|
30
|
+
# verbatim: "Provided that vowels and the letter 'Q' shall not be used and
|
|
31
|
+
# the first letter shall not be the letter 'G'." Twenty letters survive
|
|
32
|
+
# (B C D F G H J K L M N P R S T V W X Y Z), nineteen in first position.
|
|
33
|
+
# Two consequences worth stating because they are easy to get wrong:
|
|
34
|
+
# the proviso governs the SERIAL, not the provincial mark — "EC" and
|
|
35
|
+
# "ZN" both contain letters the serial may not use — and the G exclusion
|
|
36
|
+
# exists because reg 27(5)(a)(ii) reserves a leading G for departments of
|
|
37
|
+
# State. `format.regex` therefore cannot carry the charset (the lint
|
|
38
|
+
# generates vowels from `pattern`); `format.regex_strict` carries it, on
|
|
39
|
+
# every series where the proviso applies and on no other.
|
|
40
|
+
#
|
|
41
|
+
# 3. THE 2009 AMENDMENT IS THE ONE CLEAN ERA BOUNDARY IN THE WHOLE PASS.
|
|
42
|
+
# Sub-paragraph (ii) was SUBSTITUTED by r. 5(a) of GNR.589 of 27 May 2009
|
|
43
|
+
# (Government Gazette 32258), and that substitution is what introduced
|
|
44
|
+
# limb (bb) — the two-letter/two-figure/two-letter shape. Before 27 May
|
|
45
|
+
# 2009 no South African province could lawfully issue "BC 12 DF GP". That
|
|
46
|
+
# is an ENABLING-INSTRUMENT date, and it is recorded as one; the dates on
|
|
47
|
+
# which individual provinces began ISSUING under (bb) are separate facts
|
|
48
|
+
# with separate (and weaker) evidence, recorded per series.
|
|
49
|
+
#
|
|
50
|
+
# 4. THE 1994 PROVINCIAL REORGANISATION IS THE ERA BOUNDARY THIS FILE CANNOT
|
|
51
|
+
# DATE, AND SAYS SO. Four provinces became nine on 27 April 1994; seven of
|
|
52
|
+
# the nine went on to adopt suffix systems under reg 27(2)(a)(ii) while the
|
|
53
|
+
# Western Cape and (until 2023) KwaZulu-Natal kept the inherited town-code
|
|
54
|
+
# system of reg 27(2)(a)(i). The provincial notices that made those choices
|
|
55
|
+
# were issued in the second half of the 1990s under the Road Traffic Act 29
|
|
56
|
+
# of 1989 and its provincial ordinances, and NOT ONE of them was reachable
|
|
57
|
+
# in this pass: SAFLII sits behind Cloudflare, opengazettes.org.za has
|
|
58
|
+
# retired its full-text search, and gazettes.africa exposes no query
|
|
59
|
+
# endpoint. Every suffix series here therefore carries period.start 2000
|
|
60
|
+
# with `period_evidence: instrument-in-force` — the date of the instrument
|
|
61
|
+
# that governs the format TODAY, expressly not the date the format began.
|
|
62
|
+
# The real start years are a recorded gap and the single most valuable
|
|
63
|
+
# target for the verifier.
|
|
64
|
+
#
|
|
65
|
+
# 5. THE PROVINCIAL MARK IS NOT ALWAYS TWO LETTERS AND ONE OF THEM COLLIDES
|
|
66
|
+
# WITH THE PATTERN DSL. Limpopo's mark is the single letter L, which the
|
|
67
|
+
# human-pattern language reads as "any letter". This is the first file in
|
|
68
|
+
# the dataset to use the owner's 2026-08-02 pattern escape in anger:
|
|
69
|
+
# `LLL 999 \L` means three letters, three figures and a LITERAL L.
|
|
70
|
+
#
|
|
71
|
+
# 6. THERE IS NO NATIONAL PLATE DESIGN, AND THE ATTEMPT TO CREATE ONE IS
|
|
72
|
+
# UNFINISHED. Reg 35(2) fixes only a palette — "yellow or white retro-
|
|
73
|
+
# reflective surface" with "black, dark blue, dark red, or dark green
|
|
74
|
+
# letters and figures, but shall display only black letters and figures in
|
|
75
|
+
# the case of a yellow retro-reflective surface" — and reg 27(2)(b) hands
|
|
76
|
+
# the logo, landscape, letter type and colours to each MEC. GG 37542 GN 287
|
|
77
|
+
# of 9 April 2014 proposed a single national plate carrying "the allocated
|
|
78
|
+
# licence number, South African Flag and the licence mark of the respective
|
|
79
|
+
# province at the end ... on a white retro-reflective surface landscape as
|
|
80
|
+
# shown in Schedule 5". It was published FOR COMMENT under s. 75(6) of the
|
|
81
|
+
# Act. Whether it was ever promulgated was not established in this pass and
|
|
82
|
+
# is NOT asserted here.
|
|
83
|
+
#
|
|
84
|
+
# REGEX POLICY (identical to plates/gb.yml, plates/de.yml and plates/nl.yml):
|
|
85
|
+
# `format.regex` is the LINT-ROUND-TRIPPABLE regex; `format.regex_strict`
|
|
86
|
+
# carries the reg 27(2)(a)(ii) proviso alphabet, which `regex` cannot.
|
|
87
|
+
#
|
|
88
|
+
# SEPARATOR NOTE (PRD-PLATES § 2.6): a South African plate prints NO separator
|
|
89
|
+
# glyph between the serial groups. Reg 35(3) prescribes the ARRANGEMENT of the
|
|
90
|
+
# groups ("with all the letters and figures in one line", or the two-line
|
|
91
|
+
# forms) and never a separator character; the millimetre spacing lives in
|
|
92
|
+
# SANS/SABS 1116, a paywalled SABS publication which PRD-PLATES § 6 lets us
|
|
93
|
+
# build to and forbids us to reproduce. The space in every `pattern` here is
|
|
94
|
+
# the conventional textual rendering of that gap, and every regex accepts it
|
|
95
|
+
# as optional. The hyphen widely printed in the Western Cape ("CA 123-456") is
|
|
96
|
+
# a typographic convention with no instrument behind it and is NOT written
|
|
97
|
+
# into any pattern; the Western Cape regexes accept the digits with or without
|
|
98
|
+
# the gap.
|
|
99
|
+
jurisdiction: za
|
|
100
|
+
authority:
|
|
101
|
+
name: "Department of Transport (national) and the MEC responsible for road traffic in each of the nine provinces"
|
|
102
|
+
url: "https://www.transport.gov.za/"
|
|
103
|
+
binding: vehicle
|
|
104
|
+
binding_note: >-
|
|
105
|
+
Reg 27(3), verbatim: "Every motor vehicle licensed in a province shall be
|
|
106
|
+
allocated with a licence number". The number is allocated to the VEHICLE on
|
|
107
|
+
licensing, not to the owner; reg 29(1)-(2) lets the MEC change it, and reg
|
|
108
|
+
28(5) lets the holder of a personalised number apply to move that number to
|
|
109
|
+
another vehicle he or she owns — the personalised regime is the one place
|
|
110
|
+
where a South African number follows a PERSON.
|
|
111
|
+
instrument:
|
|
112
|
+
act:
|
|
113
|
+
citation: "National Road Traffic Act, 1996 (Act No. 93 of 1996)"
|
|
114
|
+
assented: "1996-11-12"
|
|
115
|
+
published: "1996-11-22" # President's Office Notice No. 1892
|
|
116
|
+
commencement: "on a date fixed by the President by proclamation (s. 94(2)) — the proclamation was not pinned in this pass"
|
|
117
|
+
enabling_power: >-
|
|
118
|
+
s. 75(1), verbatim: "The Minister may after consultation with the MECs
|
|
119
|
+
make regulations ... and in particular, but without derogating from the
|
|
120
|
+
generality of this subsection, regarding— ... (b) the identification of
|
|
121
|
+
vehicles or parts of vehicles and, in relation to a motor vehicle, the
|
|
122
|
+
size and shape of the registration mark or number to be displayed in
|
|
123
|
+
terms of this Act and the means to be applied to validate such mark or
|
|
124
|
+
number and to render any such mark or number easily distinguishable,
|
|
125
|
+
whether by night or by day, when any such vehicle is operated on a
|
|
126
|
+
public road".
|
|
127
|
+
source: "https://www.gov.za/sites/default/files/gcis_document/201409/a93-96.pdf # Act 93 of 1996 as published; s. 75(1)(b), s. 68 (unlawful acts in relation to registration plates), s. 94 short title and commencement"
|
|
128
|
+
regulations:
|
|
129
|
+
citation: "National Road Traffic Regulations, 2000, GNR.225 of 17 March 2000 (Department of Transport)"
|
|
130
|
+
repeals: "GNR.910 of 26 April 1990 (Road Traffic Regulations, 1990)"
|
|
131
|
+
consolidation_read: "as amended to GNR.359 of 2 May 2010"
|
|
132
|
+
amended_by:
|
|
133
|
+
- "R.761, GG 21425, 31 July 2000"
|
|
134
|
+
- "R.941, GG 21569, 22 September 2000"
|
|
135
|
+
- "R.726, GG 22553, 3 August 2001"
|
|
136
|
+
- "R.2116, GG 22736, 5 October 2001"
|
|
137
|
+
- "R.779, GG 23484, 4 June 2002"
|
|
138
|
+
- "R.1341, GG 25484, 25 September 2003"
|
|
139
|
+
- "R.881, GG 26598, 23 July 2004"
|
|
140
|
+
- "R.871, GG 27999, 2 September 2005"
|
|
141
|
+
- "R.1066, GG 28227, 23 November 2005"
|
|
142
|
+
- "R.1319, GG 28258, 2 December 2005"
|
|
143
|
+
- "R.92, GG 28446, 7 April 2006"
|
|
144
|
+
- "R.891, GG 29195, 4 September 2006"
|
|
145
|
+
- "R.964, GG 29260, 29 September 2006"
|
|
146
|
+
- "R.404, GG 29865, 4 May 2007"
|
|
147
|
+
- "R.865, GG 30295, 28 September 2007"
|
|
148
|
+
- "R.589, GG 32258, 27 May 2009"
|
|
149
|
+
- "R.359, GG 33168, 2 May 2010"
|
|
150
|
+
amendment_note: >-
|
|
151
|
+
The consolidation read for this pass stops at GNR.359 of 2 May 2010.
|
|
152
|
+
Amendments after 2010 are NOT reflected in any claim in this file, and a
|
|
153
|
+
verifier should treat every reg 27/35 quote as "in force as at 2 May
|
|
154
|
+
2010, unchanged as at GG 37542 of 9 April 2014" rather than as
|
|
155
|
+
necessarily current. GG 37542 GN 287 (2014) is the latest text located
|
|
156
|
+
and it reproduces reg 27(1)-(5) identically.
|
|
157
|
+
source: "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # the consolidated National Road Traffic Regulations 2000 — table of repeals, amendment table, regs 27, 28, 28A, 29, 35, 50, 71, 82, 84; accessed 2026-08-02"
|
|
158
|
+
source_host_caveat: >-
|
|
159
|
+
THE HOST IS NOT THE PUBLISHER, AND THAT IS STATED HERE RATHER THAN
|
|
160
|
+
HIDDEN. The consolidated regulations were read from the IFRC Disaster
|
|
161
|
+
Law database, which mirrors the text; no South African government or
|
|
162
|
+
free-access-to-law host served it in this pass (SAFLII and
|
|
163
|
+
lawlibrary.org.za both returned HTTP 403 behind bot protection,
|
|
164
|
+
acts.co.za paywalls the regulation pages, natis.gov.za returned 403, and
|
|
165
|
+
gov.za's own search returns no regulation documents). The mitigation is
|
|
166
|
+
corroboration rather than trust: every regulation 27 and regulation 35
|
|
167
|
+
claim in this file was independently re-read in Government Gazette
|
|
168
|
+
37542, General Notice 287 of 9 April 2014, hosted on gov.za, and the two
|
|
169
|
+
texts agree word for word. Where GN 287 does NOT reproduce a provision
|
|
170
|
+
(regs 28A, 50, 71, 82, 84 and the amendment table) the claim rests on
|
|
171
|
+
the mirror alone and is flagged for the verifier.
|
|
172
|
+
licence: >-
|
|
173
|
+
South African statutes and regulations are edicts of government. The
|
|
174
|
+
Government Printing Works republication note carried by the gazette PDFs
|
|
175
|
+
("This gazette is also available free online at www.gpwonline.co.za")
|
|
176
|
+
accompanies the Government Gazette text quoted here. SANS/SABS 1116 is a
|
|
177
|
+
COPYRIGHTED SABS publication and is cited, never reproduced
|
|
178
|
+
(PRD-PLATES § 6).
|
|
179
|
+
|
|
180
|
+
# ---------------------------------------------------------------------------
|
|
181
|
+
# Jurisdiction-wide facts, cited once and referenced per series.
|
|
182
|
+
# ---------------------------------------------------------------------------
|
|
183
|
+
common:
|
|
184
|
+
charset:
|
|
185
|
+
permitted_letters: [B, C, D, F, G, H, J, K, L, M, N, P, R, S, T, V, W, X, Y, Z]
|
|
186
|
+
excluded_letters: [A, E, I, O, U, Q]
|
|
187
|
+
first_letter_excluded: [G]
|
|
188
|
+
scope: >-
|
|
189
|
+
Reg 27(2)(a)(ii) proviso ONLY — that is, the provincial licence NUMBER
|
|
190
|
+
systems (three letters + three figures; two letters + two figures + two
|
|
191
|
+
letters). It does NOT reach the provincial mark itself, the registering-
|
|
192
|
+
authority marks of reg 27(2)(a)(i), or the reg 27(5) special classes.
|
|
193
|
+
Reg 71(2) imposes a parallel but not identical rule on motor trade
|
|
194
|
+
numbers: "shall not consist of vowels, except the letter 'A' as referred
|
|
195
|
+
to in paragraph (a), or the letter 'Q'".
|
|
196
|
+
source: "https://www.gov.za/sites/default/files/gcis_document/201409/37542gen287.pdf # GG 37542 GN 287 of 9 April 2014 reproducing reg 27(2)(a)(ii): 'Provided that vowels and the letter \"Q\" shall not be used and the first letter shall not be the letter \"G\"'"
|
|
197
|
+
layouts:
|
|
198
|
+
note: >-
|
|
199
|
+
Reg 35(3), verbatim: "The letters and figures on a number plate shall be
|
|
200
|
+
arranged— (a) with all the letters and figures in one line; or (b) with
|
|
201
|
+
the letters preceding the figures in one line and immediately thereunder,
|
|
202
|
+
the figures and, if applicable, the last letter in one line; (c) with all
|
|
203
|
+
the letters and figures and the logo or landscape in one line; or (d)
|
|
204
|
+
with the letters or the figures and the logo or landscape in one line,
|
|
205
|
+
and immediately thereunder— (i) the figures and letters; (ii) the letters
|
|
206
|
+
and letters; or (iii) the letters and figures, and, if applicable,
|
|
207
|
+
immediately thereunder, the letters in one line."
|
|
208
|
+
source: "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 35(3)"
|
|
209
|
+
colours:
|
|
210
|
+
note: >-
|
|
211
|
+
Reg 35(2), verbatim: the number plate "(b) shall have a yellow or white
|
|
212
|
+
retro-reflective surface; (c) shall have black, dark blue, dark red, or
|
|
213
|
+
dark green letters and figures, but shall display only black letters and
|
|
214
|
+
figures in the case of a yellow retro-reflective surface; (d) may display
|
|
215
|
+
a logo or landscape if it appears on a white retro-reflective surface;
|
|
216
|
+
and (e) shall be clearly legible and visible." Para (c) was substituted
|
|
217
|
+
by GNR.404 of 4 May 2007.
|
|
218
|
+
hex_basis_note: >-
|
|
219
|
+
The Regulations NAME the colours and never number them; the chromaticity
|
|
220
|
+
lives in SANS/SABS 1116, which PRD-PLATES § 6 forbids reproducing. Every
|
|
221
|
+
hex in this file is therefore `hex_basis: observed` inside a
|
|
222
|
+
statutorily named colour — the same posture plates/gb.yml takes for BS
|
|
223
|
+
AU 145e and plates/de.yml for "grünes Kennzeichen".
|
|
224
|
+
source: "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 35(2)(b)-(e)"
|
|
225
|
+
dimensions:
|
|
226
|
+
note: >-
|
|
227
|
+
Reg 35(10), second sentence, inserted by GNR.404 of 2007, verbatim:
|
|
228
|
+
"Provided that notwithstanding the provisions of this regulation, no
|
|
229
|
+
person shall operate on a public road a motor vehicle first registered
|
|
230
|
+
on or after 1 January 2010, unless such motor vehicle is fitted with a
|
|
231
|
+
520 - 113 or 250 - 205 or 250 -165 size number plate." Millimetres. The
|
|
232
|
+
Free State separately recognises a 305 x 165 mm plate for seven-character
|
|
233
|
+
personalised numbers (Provincial Notice 278 of 2006) — a size the
|
|
234
|
+
national regulation does not list, and the discrepancy is recorded, not
|
|
235
|
+
averaged (PRD-PLATES § 5.3).
|
|
236
|
+
character_height: >-
|
|
237
|
+
Reg 35(4): 75 mm is the norm and 60 mm characters may be approved by the
|
|
238
|
+
MEC for a rear illuminated space too small for 75 mm. The Free State
|
|
239
|
+
notices name the typeface with the height: "FE modified 75mm as
|
|
240
|
+
prescribed in the standard specifications of the South African Bureau of
|
|
241
|
+
Standards, SABS 1116".
|
|
242
|
+
source: "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 35(4), 35(10)"
|
|
243
|
+
fitment:
|
|
244
|
+
note: >-
|
|
245
|
+
Reg 35(7): a number plate is affixed "(e) to the back of a motor cycle,
|
|
246
|
+
motor tricycle, motor quadrucycle or trailer; and (f) one to the back and
|
|
247
|
+
one to the front of all other motor vehicles" — so motorcycles and
|
|
248
|
+
trailers are REAR ONLY and carry the same licence number as any other
|
|
249
|
+
vehicle. From 1 January 2009 the plate must be riveted or one-way-screwed
|
|
250
|
+
within 20 mm of the edges (proviso inserted by r. 7 of GNR.589 of 27 May
|
|
251
|
+
2009). Reg 35(6)(h) requires every plate on one vehicle to display "the
|
|
252
|
+
same licence number, letter type, colours, and logo or landscape", which
|
|
253
|
+
is why `rear_differs` is false throughout this file.
|
|
254
|
+
source: "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 35(6)(h), 35(7)"
|
|
255
|
+
standard:
|
|
256
|
+
citation: >-
|
|
257
|
+
Reg 35(1), as substituted by R.17(a) of GNR.1341 w.e.f. 25 September
|
|
258
|
+
2003, verbatim: the licence number "shall be displayed on a plate, to be
|
|
259
|
+
referred to as a number plate and which complies with standard
|
|
260
|
+
specification SABS 1116: 'Retro-reflective Registration Plates for Motor
|
|
261
|
+
Vehicles', Part 2: 'Registration plates (metal)' or Part 4: 'Registration
|
|
262
|
+
plates (plastic)'." Reg 50(1) binds registered manufacturers of number
|
|
263
|
+
plates to the same two parts.
|
|
264
|
+
posture: "cited, never reproduced — SABS 1116 is a paywalled SABS publication (PRD-PLATES § 6)"
|
|
265
|
+
source: "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 35(1), reg 35(6)(i), reg 50(1)(a)"
|
|
266
|
+
font:
|
|
267
|
+
name: "FE-Schrift, modified (\"FE modified\"), 75 mm — 60 mm on the 305 x 165 mm Free State personalised plate"
|
|
268
|
+
posture: >-
|
|
269
|
+
The TYPEFACE IS NAMED IN A GAZETTE, which is unusual and worth recording:
|
|
270
|
+
Free State Provincial Notice 51 of 2002 Schedule 3 para 1 and Provincial
|
|
271
|
+
Notice 52 of 2002 Schedule 2 para 1 both read "The letter type used for
|
|
272
|
+
the number shall be FE modified 75mm as prescribed in the standard
|
|
273
|
+
specifications of the South African Bureau of Standards, SABS 1116". The
|
|
274
|
+
drawing itself is in SABS 1116 and is not reproduced. Whether the other
|
|
275
|
+
eight provinces prescribe the same face was not established.
|
|
276
|
+
source: "https://www.policeroadstransport.fs.gov.za/wp-content/uploads/2012/09/Licence-number-plate-for-the-Free-State-2002.pdf # PN 51 of 2002, Schedule 3 para 1"
|
|
277
|
+
not_modelled:
|
|
278
|
+
- "TEMPORARY AND SPECIAL PERMITS (regs 84-86). A permit is a document, not a plate; reg 84(1) covers delivery, testing, repair, weighing and repossession, and reg 84(3) covers an owner who cannot comply with reg 35. Free State Provincial Notice 52 of 2002 para 2(2) refers to 'the temporary or special permit number system of the Free State Province', so permits DO carry numbers — but no permit-number grammar was located in any instrument reachable in this pass. Recorded gap."
|
|
279
|
+
- "MILITARY. The South African National Defence Force is a department of State and would fall under reg 27(5)(a)(iii) ('any other licence number determined by the chief executive officer by notice in the Gazette'). No such notice was located, so no military series is asserted here even though a three-letter/three-figure/M form is widely reported. Recorded gap."
|
|
280
|
+
- "HISTORIC / VINTAGE. No national historic-vehicle plate regime was located in the Act or the Regulations. Recorded gap."
|
|
281
|
+
- "EXPORT. No export-plate regime was located. Reg 35(6)(e) instead deals with FOREIGN plates: a vehicle registered in a prescribed territory other than Namibia must display the Convention distinguishing sign."
|
|
282
|
+
- "THE FULL REGISTERING-AUTHORITY MARK TABLES for the Western Cape and (pre-2023) KwaZulu-Natal. See plates/_decode/za-licence-marks.yml — a floor, not a census."
|
|
283
|
+
- "GAUTENG'S 2025 'SMART' NUMBER PLATE. The Gauteng Provincial Government's own media statement of 5 June 2025 describes a PILOT of tamper-evident decals, forensic QR codes and a digitised back-end portal on g-Fleet vehicles, six months of stress testing 'before the provincial rollout'. It changes the plate's SECURITY FEATURES, not the licence-number grammar, and it was still a pilot at that date — so it is recorded here and not modelled as a series."
|
|
284
|
+
|
|
285
|
+
series:
|
|
286
|
+
|
|
287
|
+
# =========================================================================
|
|
288
|
+
# A. PROVINCIAL LICENCE NUMBER SYSTEMS — reg 27(2)(a)(ii)(aa):
|
|
289
|
+
# "a combination of three letters and three figures in any sequence ...
|
|
290
|
+
# and the licence mark of the province concerned".
|
|
291
|
+
# One series per province, because the provincial mark is a LITERAL and
|
|
292
|
+
# a series is one format (PRD-PLATES § 2.2).
|
|
293
|
+
# =========================================================================
|
|
294
|
+
|
|
295
|
+
- id: za-gp-standard-3l3f
|
|
296
|
+
class: standard
|
|
297
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
298
|
+
period: { start: 2000 }
|
|
299
|
+
period_evidence: instrument-in-force
|
|
300
|
+
matching: strict
|
|
301
|
+
format:
|
|
302
|
+
pattern: "LLL 999 GP"
|
|
303
|
+
regex: '\A[A-Z]{3} ?\d{3} ?GP\z'
|
|
304
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ]{2} ?\d{3} ?GP\z'
|
|
305
|
+
charset:
|
|
306
|
+
notes: >-
|
|
307
|
+
Reg 27(2)(a)(ii) proviso: no vowels, no Q, and no leading G. The
|
|
308
|
+
strict twin encodes both, which `regex` cannot carry because the
|
|
309
|
+
lint generates vowels from `pattern`.
|
|
310
|
+
progression: >-
|
|
311
|
+
Reg 27 does not publish an allocation order and no Gauteng gazette
|
|
312
|
+
setting one was located. Letter-triple exhaustion is the reported
|
|
313
|
+
reason for the move to the two-letter/two-figure/two-letter shape
|
|
314
|
+
(see za-gp-standard-2l2f2l).
|
|
315
|
+
design:
|
|
316
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
317
|
+
plate_variants:
|
|
318
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
319
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
320
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
321
|
+
foreground: "#000000"
|
|
322
|
+
emblem: { present: false, note: "reg 27(2)(b) lets the MEC determine a logo or landscape; no Gauteng determination was located" }
|
|
323
|
+
rear_differs: false
|
|
324
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
325
|
+
region_encoding_mechanism: >-
|
|
326
|
+
The trailing GP is the reg 27(1) provincial mark for Gauteng and encodes
|
|
327
|
+
the province of LICENSING, not the owner's address and not the place of
|
|
328
|
+
first registration. It does not narrow further: Gauteng runs one
|
|
329
|
+
province-wide system, not per-town codes.
|
|
330
|
+
sources:
|
|
331
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(aa) three letters + three figures; reg 27(3) composition; the proviso"
|
|
332
|
+
- "https://www.gov.za/sites/default/files/gcis_document/201409/37542gen287.pdf # GG 37542 GN 287 of 9 April 2014 reproducing reg 27 in identical words"
|
|
333
|
+
- "https://cmbinary.gauteng.gov.za/Media?path=transport/Documents/Documents/GP%20Application%20Form%20-%20Personalised%20Number%20Plate.pdf&Item=658&Type=Documents&Location=/transport # Gauteng form PRN1-GP: the registration-number fields are pre-printed 'G P' — the GP mark"
|
|
334
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 35(2) colours, 35(10) sizes"
|
|
335
|
+
notes: >-
|
|
336
|
+
GAUTENG, three letters + three figures + GP. period.start 2000 is the
|
|
337
|
+
NRTR 2000 and is an instrument-in-force date, NOT the year the format
|
|
338
|
+
began: Gauteng's suffix system dates from the province's creation in the
|
|
339
|
+
1994 reorganisation, under the Road Traffic Act 29 of 1989, and the
|
|
340
|
+
provincial notice that established it was not reachable in this pass.
|
|
341
|
+
This series is not closed — the overwhelming majority of Gauteng plates
|
|
342
|
+
on the road carry it — and it runs in parallel with the newer
|
|
343
|
+
two-letter/two-figure/two-letter issue.
|
|
344
|
+
|
|
345
|
+
- id: za-ec-standard-3l3f
|
|
346
|
+
class: standard
|
|
347
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
348
|
+
period: { start: 2000 }
|
|
349
|
+
period_evidence: instrument-in-force
|
|
350
|
+
matching: strict
|
|
351
|
+
format:
|
|
352
|
+
pattern: "LLL 999 EC"
|
|
353
|
+
regex: '\A[A-Z]{3} ?\d{3} ?EC\z'
|
|
354
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ]{2} ?\d{3} ?EC\z'
|
|
355
|
+
charset: { notes: "reg 27(2)(a)(ii) proviso — no vowels, no Q, no leading G. Note that the MARK itself contains the vowel E: the proviso governs the serial only." }
|
|
356
|
+
design:
|
|
357
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
358
|
+
plate_variants:
|
|
359
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
360
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
361
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
362
|
+
foreground: "#000000"
|
|
363
|
+
rear_differs: false
|
|
364
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
365
|
+
sources:
|
|
366
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(aa) + proviso; reg 35(2),(10)"
|
|
367
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the provincial mark EC — secondary-wikipedia, untraced to its provincial gazette notice; accessed 2026-08-02"
|
|
368
|
+
notes: >-
|
|
369
|
+
EASTERN CAPE, three letters + three figures + EC. THE MARK IS THE WEAK
|
|
370
|
+
CLAIM HERE: the grammar is primary (reg 27) but the two letters "EC" rest
|
|
371
|
+
on Wikipedia and were not traced to the Eastern Cape provincial gazette
|
|
372
|
+
notice made under reg 27(1). Flagged for the verifier.
|
|
373
|
+
|
|
374
|
+
- id: za-fs-standard-3l3f
|
|
375
|
+
class: standard
|
|
376
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
377
|
+
period: { start: 2000 }
|
|
378
|
+
period_evidence: instrument-in-force
|
|
379
|
+
matching: strict
|
|
380
|
+
format:
|
|
381
|
+
pattern: "LLL 999 FS"
|
|
382
|
+
regex: '\A[A-Z]{3} ?\d{3} ?FS\z'
|
|
383
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ]{2} ?\d{3} ?FS\z'
|
|
384
|
+
charset: { notes: "reg 27(2)(a)(ii) proviso — no vowels, no Q, no leading G" }
|
|
385
|
+
design:
|
|
386
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
387
|
+
plate_variants:
|
|
388
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
389
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
390
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
391
|
+
foreground: "#000000"
|
|
392
|
+
emblem:
|
|
393
|
+
present: true
|
|
394
|
+
rendered: placeholder
|
|
395
|
+
note: >-
|
|
396
|
+
THE ONLY FULLY-SOURCED PROVINCIAL DESIGN IN THIS FILE. Free State
|
|
397
|
+
Provincial Notice 51 of 2002 (Provincial Gazette 25 of 9 April 2002),
|
|
398
|
+
Schedule 1, verbatim: the background "shall be printed under the top
|
|
399
|
+
coat of the retro-reflective surface with translucent ink and shall
|
|
400
|
+
be - (a) a cheetah in the colour brown 0760 with black spots, 50 mm
|
|
401
|
+
high and 84 mm wide; (b) sky in the colour blue 0460; (c) mountain
|
|
402
|
+
range in the colour brown 0760 with black rock reeves; and (d)
|
|
403
|
+
rolling hills in the colour green 0660". The ink codes are the
|
|
404
|
+
notice's own and are NOT convertible to hex here. Schedule 3 para 4
|
|
405
|
+
adds a covert element: the retro-reflective sheeting carries the
|
|
406
|
+
manufacturer's identifier and "the Province by way of the letters
|
|
407
|
+
'FS' inside a 12 mm circle interspersed throughout the sheeting".
|
|
408
|
+
PRD-PLATES § 3 placeholder rule applies to the cheetah landscape.
|
|
409
|
+
rear_differs: false
|
|
410
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
411
|
+
sources:
|
|
412
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(aa) + proviso"
|
|
413
|
+
- "https://www.policeroadstransport.fs.gov.za/wp-content/uploads/2012/09/Licence-number-plate-for-the-Free-State-2002.pdf # Free State Provincial Notice 51 of 2002, Provincial Gazette 25 of 9 April 2002, made under reg 27: para 3(c) black letters on white retro-reflective with the Schedule 1/3 landscape; para 12 metal only (SABS 1116 Part 2); para 14 'This notice takes effect on 1 June 2002'; Schedule 3 para 1 FE modified 75 mm; Schedule 3 para 4 the FS-in-a-circle sheeting mark"
|
|
414
|
+
- "https://www.policeroadstransport.fs.gov.za/wp-content/uploads/2012/09/Amendment-of-personalised-and-licence-number-plates-for-the-Free-State-2010.pdf # Free State Provincial Notice 16 of 2010, Provincial Gazette 17 of 23 April 2010: deletes the number-plate validation label and the five-year plate-replacement rule from PN 51 of 2002"
|
|
415
|
+
notes: >-
|
|
416
|
+
FREE STATE, three letters + three figures + FS. The SERIAL grammar is the
|
|
417
|
+
national reg 27 grammar; what is province-specific and fully primary here
|
|
418
|
+
is the DESIGN: black on white with the cheetah landscape from 1 June 2002
|
|
419
|
+
(Provincial Notice 51 of 2002), metal plates only, with a four-year
|
|
420
|
+
run-out for existing plastic and for the older black-on-white and
|
|
421
|
+
black-on-yellow plates authorised by the repealed Government Notice 1579
|
|
422
|
+
of 28 November 1997. The five-year plate validity and the self-destructing
|
|
423
|
+
"number plate validation label" that PN 51 introduced were both REPEALED
|
|
424
|
+
by Provincial Notice 16 of 2010 (23 April 2010) — a rare, cleanly dated
|
|
425
|
+
reversal, recorded because a consumer reading only the 2002 notice would
|
|
426
|
+
wrongly expire every Free State plate.
|
|
427
|
+
|
|
428
|
+
- id: za-lp-standard-3l3f
|
|
429
|
+
class: standard
|
|
430
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
431
|
+
period: { start: 2000 }
|
|
432
|
+
period_evidence: instrument-in-force
|
|
433
|
+
matching: strict
|
|
434
|
+
format:
|
|
435
|
+
pattern: 'LLL 999 \L'
|
|
436
|
+
regex: '\A[A-Z]{3} ?\d{3} ?L\z'
|
|
437
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ]{2} ?\d{3} ?L\z'
|
|
438
|
+
charset: { notes: "reg 27(2)(a)(ii) proviso — no vowels, no Q, no leading G" }
|
|
439
|
+
pattern_note: >-
|
|
440
|
+
THE PATTERN ESCAPE'S FIRST PRODUCTION USE. Limpopo's provincial mark is
|
|
441
|
+
the single letter L, which is also the human-pattern DSL's token for
|
|
442
|
+
"any letter". `\L` is the LITERAL L (owner ruling, 2026-08-02), so
|
|
443
|
+
`LLL 999 \L` reads "three letters, three figures, literal L" and the
|
|
444
|
+
round-trip is exact. Before the escape existed this series would have
|
|
445
|
+
had to be downgraded to recall-only.
|
|
446
|
+
design:
|
|
447
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
448
|
+
plate_variants:
|
|
449
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
450
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
451
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
452
|
+
foreground: "#000000"
|
|
453
|
+
rear_differs: false
|
|
454
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
455
|
+
sources:
|
|
456
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(aa) + proviso; reg 27(1) provincial mark"
|
|
457
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the one-letter provincial mark L for Limpopo — secondary-wikipedia, untraced to its provincial gazette notice; accessed 2026-08-02"
|
|
458
|
+
notes: >-
|
|
459
|
+
LIMPOPO, three letters + three figures + L. Two caveats. (1) The mark is
|
|
460
|
+
Wikipedia-derived and untraced to the Limpopo provincial gazette. (2) The
|
|
461
|
+
province was named Northern Province until its 2003 renaming and the mark
|
|
462
|
+
it used before then was not established — a plate collected in the 1990s
|
|
463
|
+
may therefore decode to a mark this file does not carry. Recorded gap.
|
|
464
|
+
|
|
465
|
+
- id: za-mp-standard-3l3f
|
|
466
|
+
class: standard
|
|
467
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
468
|
+
period: { start: 2000 }
|
|
469
|
+
period_evidence: instrument-in-force
|
|
470
|
+
matching: strict
|
|
471
|
+
format:
|
|
472
|
+
pattern: "LLL 999 MP"
|
|
473
|
+
regex: '\A[A-Z]{3} ?\d{3} ?MP\z'
|
|
474
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ]{2} ?\d{3} ?MP\z'
|
|
475
|
+
charset: { notes: "reg 27(2)(a)(ii) proviso — no vowels, no Q, no leading G" }
|
|
476
|
+
design:
|
|
477
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
478
|
+
plate_variants:
|
|
479
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
480
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
481
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
482
|
+
foreground: "#000000"
|
|
483
|
+
rear_differs: false
|
|
484
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
485
|
+
sources:
|
|
486
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(aa) + proviso"
|
|
487
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the provincial mark MP — secondary-wikipedia, untraced; accessed 2026-08-02"
|
|
488
|
+
notes: >-
|
|
489
|
+
MPUMALANGA, three letters + three figures + MP. The province was named
|
|
490
|
+
Eastern Transvaal at its 1994 creation and renamed Mpumalanga in 1995;
|
|
491
|
+
neither the mark nor the rename's effect on it was traced to a provincial
|
|
492
|
+
gazette in this pass.
|
|
493
|
+
|
|
494
|
+
- id: za-nc-standard-3l3f
|
|
495
|
+
class: standard
|
|
496
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
497
|
+
period: { start: 2000 }
|
|
498
|
+
period_evidence: instrument-in-force
|
|
499
|
+
matching: strict
|
|
500
|
+
format:
|
|
501
|
+
pattern: "LLL 999 NC"
|
|
502
|
+
regex: '\A[A-Z]{3} ?\d{3} ?NC\z'
|
|
503
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ]{2} ?\d{3} ?NC\z'
|
|
504
|
+
charset: { notes: "reg 27(2)(a)(ii) proviso — no vowels, no Q, no leading G" }
|
|
505
|
+
design:
|
|
506
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
507
|
+
plate_variants:
|
|
508
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
509
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
510
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
511
|
+
foreground: "#000000"
|
|
512
|
+
rear_differs: false
|
|
513
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
514
|
+
sources:
|
|
515
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(aa) + proviso"
|
|
516
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the provincial mark NC — secondary-wikipedia, untraced; accessed 2026-08-02"
|
|
517
|
+
notes: >-
|
|
518
|
+
NORTHERN CAPE, three letters + three figures + NC. A Northern Cape plate
|
|
519
|
+
is the clearest demonstration of the two-dimension trap this file guards
|
|
520
|
+
against: the province was carved out of the old Cape Province, whose
|
|
521
|
+
registering-authority marks all began with C and are still issued next
|
|
522
|
+
door in the Western Cape, so a C-initial mark and an NC suffix are the
|
|
523
|
+
SAME geography a generation apart and must never be conflated.
|
|
524
|
+
|
|
525
|
+
- id: za-nw-standard-3l3f
|
|
526
|
+
class: standard
|
|
527
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
528
|
+
period: { start: 2000 }
|
|
529
|
+
period_evidence: instrument-in-force
|
|
530
|
+
matching: strict
|
|
531
|
+
format:
|
|
532
|
+
pattern: "LLL 999 NW"
|
|
533
|
+
regex: '\A[A-Z]{3} ?\d{3} ?NW\z'
|
|
534
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ]{2} ?\d{3} ?NW\z'
|
|
535
|
+
charset: { notes: "reg 27(2)(a)(ii) proviso — no vowels, no Q, no leading G" }
|
|
536
|
+
design:
|
|
537
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
538
|
+
plate_variants:
|
|
539
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
540
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
541
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
542
|
+
foreground: "#000000"
|
|
543
|
+
rear_differs: false
|
|
544
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
545
|
+
sources:
|
|
546
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(aa) + proviso"
|
|
547
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the provincial mark NW, and a reported new North West numbering system announced December 2015 and implemented February 2016 — secondary-wikipedia, untraced; accessed 2026-08-02"
|
|
548
|
+
notes: >-
|
|
549
|
+
NORTH WEST, three letters + three figures + NW. A change of numbering
|
|
550
|
+
system is reported for February 2016 (announced December 2015) and was
|
|
551
|
+
NOT modelled: no notice was located, and a reg 27(4) notice establishing
|
|
552
|
+
a NEW system would have had to choose between limbs (aa) and (bb), which
|
|
553
|
+
would decide whether this series should have an end year. Recorded as the
|
|
554
|
+
most likely missing series in this file.
|
|
555
|
+
|
|
556
|
+
# =========================================================================
|
|
557
|
+
# B. PROVINCIAL LICENCE NUMBER SYSTEMS — reg 27(2)(a)(ii)(bb), the limb
|
|
558
|
+
# INSERTED by r. 5(a) of GNR.589 of 27 May 2009 (GG 32258):
|
|
559
|
+
# "a combination of two letters, two figures and two letters in any
|
|
560
|
+
# sequence ... and the licence mark of the province concerned".
|
|
561
|
+
# =========================================================================
|
|
562
|
+
|
|
563
|
+
- id: za-gp-standard-2l2f2l
|
|
564
|
+
class: standard
|
|
565
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
566
|
+
period: { start: 2023 }
|
|
567
|
+
period_evidence: secondary-wikipedia
|
|
568
|
+
matching: strict
|
|
569
|
+
format:
|
|
570
|
+
pattern: "LL 99 LL GP"
|
|
571
|
+
regex: '\A[A-Z]{2} ?\d{2} ?[A-Z]{2} ?GP\z'
|
|
572
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ] ?\d{2} ?[BCDFGHJKLMNPRSTVWXYZ]{2} ?GP\z'
|
|
573
|
+
charset: { notes: "reg 27(2)(a)(ii) proviso — no vowels, no Q, no leading G; the proviso attaches to sub-para (ii) as a whole and so governs limb (bb) exactly as it governs limb (aa)" }
|
|
574
|
+
design:
|
|
575
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
576
|
+
plate_variants:
|
|
577
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
578
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
579
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
580
|
+
foreground: "#000000"
|
|
581
|
+
rear_differs: false
|
|
582
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
583
|
+
sources:
|
|
584
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(bb) and its amendment note '[Sub-para. (ii) substituted by r. 5 (a) of GNR.589 of 27 May 2009.]' — the enabling instrument"
|
|
585
|
+
- "https://www.gov.za/sites/default/files/gcis_document/201409/37542gen287.pdf # GG 37542 GN 287 of 9 April 2014 reproducing limb (bb) verbatim"
|
|
586
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the 2023 Gauteng transition from three-letter/three-digit to two-letter/two-digit/two-letter, and the example BC 12 DF GP — secondary-wikipedia, untraced to a Gauteng provincial gazette notice; accessed 2026-08-02"
|
|
587
|
+
- "https://cmbinary.gauteng.gov.za/Media?path=transport/Documents/Documents/GP%20Application%20Form%20-%20Personalised%20Number%20Plate.pdf&Item=658&Type=Documents&Location=/transport # the GP mark itself (Gauteng form PRN1-GP)"
|
|
588
|
+
notes: >-
|
|
589
|
+
GAUTENG, two letters + two figures + two letters + GP. THE PERIOD IS THE
|
|
590
|
+
WEAK CLAIM AND IT IS THE ONLY REASON THIS SERIES IS NOT FULLY PRIMARY.
|
|
591
|
+
The FORMAT is primary twice over (reg 27(2)(a)(ii)(bb), and GG 37542 GN
|
|
592
|
+
287 reproducing it) and could not have been issued before 27 May 2009,
|
|
593
|
+
the day GNR.589 inserted limb (bb) — that is the hard lower bound. The
|
|
594
|
+
2023 start is Wikipedia-derived: the Gauteng notice under reg 27(4)
|
|
595
|
+
establishing the new system was not located, and no Gauteng provincial
|
|
596
|
+
gazette index with full-text search was reachable. Distinct from
|
|
597
|
+
za-gp-standard-3l3f, which continues in parallel and still carries the
|
|
598
|
+
overwhelming majority of Gauteng registrations. RANKED FIRST for the
|
|
599
|
+
verifier: one Gauteng Provincial Gazette citation converts this from
|
|
600
|
+
secondary to instrument-evidenced.
|
|
601
|
+
|
|
602
|
+
- id: za-zn-standard-2l2f2l
|
|
603
|
+
class: standard
|
|
604
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
605
|
+
period: { start: 2023 }
|
|
606
|
+
period_evidence: secondary-first-issue
|
|
607
|
+
matching: strict
|
|
608
|
+
format:
|
|
609
|
+
pattern: "LL 99 LL ZN"
|
|
610
|
+
regex: '\A[A-Z]{2} ?\d{2} ?[A-Z]{2} ?ZN\z'
|
|
611
|
+
regex_strict: '\A[BCDFHJKLMNPRSTVWXYZ][BCDFGHJKLMNPRSTVWXYZ] ?\d{2} ?[BCDFGHJKLMNPRSTVWXYZ]{2} ?ZN\z'
|
|
612
|
+
charset: { notes: "reg 27(2)(a)(ii) proviso — no vowels, no Q, no leading G" }
|
|
613
|
+
progression: >-
|
|
614
|
+
Phased, and the phases are dated by the provincial government itself:
|
|
615
|
+
phase 1 from 1 December 2023 covers "the registration of new vehicles,
|
|
616
|
+
change of ownership, and re-registration of stolen-recovered vehicles";
|
|
617
|
+
phase 2 from 1 March 2024 opens voluntary migration, with a 24-month
|
|
618
|
+
window "after which all motor vehicles will automatically be issued
|
|
619
|
+
with a new format licence number upon licensing".
|
|
620
|
+
design:
|
|
621
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
622
|
+
plate_variants:
|
|
623
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
624
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
625
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
626
|
+
foreground: "#000000"
|
|
627
|
+
rear_differs: false
|
|
628
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
629
|
+
sources:
|
|
630
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(ii)(bb) inserted by r. 5(a) of GNR.589 of 27 May 2009 — the enabling instrument; reg 27(4) MEC may establish a new licence number system"
|
|
631
|
+
- "https://www.sanews.gov.za/south-africa/new-provincial-number-plate-system-unveiled-kzn # SAnews.gov.za (Government Communication and Information System), 1 December 2023: KwaZulu-Natal Premier unveils the new system, 'marking an end to the traditional discrete numbering system to a more dynamic and continuous numbering system'; phase 1 from that Friday, phase 2 from 1 March 2024, 24-month migration window; accessed 2026-08-02"
|
|
632
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the ZN mark and the two-letter/two-digit/two-letter shape for KwaZulu-Natal — secondary-wikipedia; accessed 2026-08-02"
|
|
633
|
+
notes: >-
|
|
634
|
+
KWAZULU-NATAL, two letters + two figures + two letters + ZN, from
|
|
635
|
+
1 December 2023. The DATE is pinned to a government publication (SAnews,
|
|
636
|
+
GCIS) that also states the reason in the province's own words — "towns
|
|
637
|
+
running out of available numbers" — which is exactly what a
|
|
638
|
+
registering-authority-mark system does when it exhausts. The SHAPE rests
|
|
639
|
+
on reg 27(2)(a)(ii)(bb) plus Wikipedia for the choice of limb, and the
|
|
640
|
+
mark "ZN" on Wikipedia alone. Supersedes za-zn-ra-mark for NEW
|
|
641
|
+
registrations only; the old discrete numbers stay valid and on the road
|
|
642
|
+
through the migration window.
|
|
643
|
+
|
|
644
|
+
# =========================================================================
|
|
645
|
+
# C. REGISTERING-AUTHORITY MARK SYSTEMS — reg 27(2)(a)(i) + reg 27(3):
|
|
646
|
+
# "the licence mark referred to in subregulation (2)(a)(i) and figures".
|
|
647
|
+
# The inherited pre-1994 town-code system, surviving in two provinces.
|
|
648
|
+
# =========================================================================
|
|
649
|
+
|
|
650
|
+
- id: za-wc-ra-mark
|
|
651
|
+
class: standard
|
|
652
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
653
|
+
period: { start: 2000 }
|
|
654
|
+
period_evidence: instrument-in-force
|
|
655
|
+
matching: strict
|
|
656
|
+
format:
|
|
657
|
+
pattern: "CL 999999"
|
|
658
|
+
regex: '\AC[A-Z]{1,2} ?\d{1,3}(?:[- ]?\d{1,3})?\z'
|
|
659
|
+
charset:
|
|
660
|
+
notes: >-
|
|
661
|
+
NO STRICT TWIN, DELIBERATELY. The reg 27(2)(a)(ii) proviso does not
|
|
662
|
+
reach this limb, and the only thing that would narrow the regex is
|
|
663
|
+
the closed list of Western Cape registering-authority marks — which
|
|
664
|
+
is not published anywhere this pass could reach. A strict twin built
|
|
665
|
+
from the eight marks the Western Cape Government happens to print as
|
|
666
|
+
worked examples would REJECT valid plates, which is worse than no
|
|
667
|
+
twin at all. See plates/_decode/za-licence-marks.yml.
|
|
668
|
+
progression: >-
|
|
669
|
+
Sequential within a mark; a mark is replaced when it exhausts (Cape
|
|
670
|
+
Town CA -> CAA, reported 13 April 2019; George CAW -> CAG, reported
|
|
671
|
+
late 2019 — both secondary-wikipedia).
|
|
672
|
+
design:
|
|
673
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
674
|
+
plate_variants:
|
|
675
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
676
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
677
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
678
|
+
foreground: "#000000"
|
|
679
|
+
rear_differs: false
|
|
680
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
681
|
+
region_encoding_mechanism: >-
|
|
682
|
+
The LEADING letters are the reg 27(2)(a)(i) registering-authority mark
|
|
683
|
+
and they decode to the licensing OFFICE, which is a real town-level
|
|
684
|
+
decode and the most Geoguessr-useful fact in South Africa. Every Western
|
|
685
|
+
Cape mark located begins with C, inherited from the pre-1994 Cape
|
|
686
|
+
Province allocation; marks are two or three letters and are MAXIMAL-MUNCH
|
|
687
|
+
against the digits (CB and CBY both exist, so a parser must take the
|
|
688
|
+
longest alphabetic run before the first digit). The table is a floor, not
|
|
689
|
+
a census — an unlisted C-initial mark is unresolved, never invalid.
|
|
690
|
+
sources:
|
|
691
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(i) 'a combination of letters'; reg 27(3) 'the licence mark ... and figures'"
|
|
692
|
+
- "https://www.westerncape.gov.za/mobility/service/applying-special-motor-vehicle-number-plates # Western Cape Government fee table, worked discrete-number examples 'CY 6', 'CW 16', 'CBY 3', 'CG 131', 'CBY 15', 'CK 1441', 'CB 131', 'CFM 2332' — the mark shapes and the 1-to-6-figure range; accessed 2026-08-02"
|
|
693
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the CA/CAA (Cape Town, 13 April 2019) and CAW/CAG (George, late 2019) exhaustion changes — secondary-wikipedia; accessed 2026-08-02"
|
|
694
|
+
notes: >-
|
|
695
|
+
WESTERN CAPE, registering-authority mark + up to six figures — the last
|
|
696
|
+
province that never adopted a suffix system, and the direct survival of
|
|
697
|
+
the pre-1994 Cape Province town codes. period.start 2000 is the NRTR and
|
|
698
|
+
is an instrument-in-force date: these marks are decades older than the
|
|
699
|
+
instrument that now governs them. Note the asymmetry with every suffix
|
|
700
|
+
province: "WP" is NOT on an ordinary Western Cape plate at all — it
|
|
701
|
+
appears only on personalised numbers (see za-wc-personalised). The
|
|
702
|
+
1-to-6-figure range is taken from the province's own fee table, which
|
|
703
|
+
prices discrete numbers by character count from three to six and then
|
|
704
|
+
"All others"; the six-digit full-length number is conventionally printed
|
|
705
|
+
3-3 with a hyphen ("CA 123-456") and no instrument requires that hyphen,
|
|
706
|
+
so it is not written into the pattern.
|
|
707
|
+
|
|
708
|
+
- id: za-zn-ra-mark
|
|
709
|
+
class: standard
|
|
710
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
711
|
+
period: { start: 2000, end: 2023 }
|
|
712
|
+
period_evidence: instrument-in-force
|
|
713
|
+
matching: strict
|
|
714
|
+
format:
|
|
715
|
+
pattern: "NL 999999"
|
|
716
|
+
regex: '\AN[A-Z]{1,2} ?\d{1,3}(?:[- ]?\d{1,3})?\z'
|
|
717
|
+
charset: { notes: "No strict twin, for the same reason as za-wc-ra-mark: no closed KwaZulu-Natal mark table was located." }
|
|
718
|
+
design:
|
|
719
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
720
|
+
plate_variants:
|
|
721
|
+
- { w: 250, h: 205, unit: mm, note: "reg 35(10)" }
|
|
722
|
+
- { w: 250, h: 165, unit: mm, note: "reg 35(10)" }
|
|
723
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
724
|
+
foreground: "#000000"
|
|
725
|
+
rear_differs: false
|
|
726
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
727
|
+
region_encoding_mechanism: >-
|
|
728
|
+
Leading letters are the registering-authority mark and decode to the
|
|
729
|
+
licensing town. Every KwaZulu-Natal mark located begins with N,
|
|
730
|
+
inherited from the pre-1994 Natal allocation. Only two rows are carried
|
|
731
|
+
in the decode table (NPS -> NSC, Port Shepstone) and both are
|
|
732
|
+
secondary-wikipedia; the rest of the table is a recorded gap.
|
|
733
|
+
sources:
|
|
734
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(2)(a)(i) + reg 27(3); reg 27(4) MEC may establish a new system"
|
|
735
|
+
- "https://www.sanews.gov.za/south-africa/new-provincial-number-plate-system-unveiled-kzn # SAnews.gov.za, 1 December 2023: the end of 'the traditional discrete numbering system', phase 1 from 1 December 2023, and 'the issue of towns running out of available numbers' as the stated reason; accessed 2026-08-02"
|
|
736
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_South_Africa # the N-initial mark family and the Port Shepstone NPS -> NSC change of 30 June 2020 — secondary-wikipedia; accessed 2026-08-02"
|
|
737
|
+
notes: >-
|
|
738
|
+
KWAZULU-NATAL, registering-authority mark + up to six figures — CLOSED TO
|
|
739
|
+
NEW ISSUE on 1 December 2023, when the province moved to the ZN suffix
|
|
740
|
+
system. The end year is the government-announced phase-1 date and is the
|
|
741
|
+
date NEW registrations stopped receiving these numbers; existing discrete
|
|
742
|
+
numbers remain valid and on the road, and the province gave owners a
|
|
743
|
+
24-month voluntary-migration window from 1 March 2024. Distinct from
|
|
744
|
+
za-wc-ra-mark, which is the same statutory limb still open in the
|
|
745
|
+
Western Cape.
|
|
746
|
+
|
|
747
|
+
# =========================================================================
|
|
748
|
+
# D. PERSONALISED LICENCE NUMBERS — reg 28. Each province establishes and
|
|
749
|
+
# prices its own system; the shape is always "chosen characters +
|
|
750
|
+
# provincial mark".
|
|
751
|
+
# =========================================================================
|
|
752
|
+
|
|
753
|
+
- id: za-wc-personalised
|
|
754
|
+
class: personalized
|
|
755
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
756
|
+
period: { start: 2000 }
|
|
757
|
+
period_evidence: instrument-in-force
|
|
758
|
+
matching: strict
|
|
759
|
+
format:
|
|
760
|
+
pattern: "LLL WP"
|
|
761
|
+
regex: '\A[A-Z0-9]{1,7}[- ]?WP\z'
|
|
762
|
+
charset:
|
|
763
|
+
notes: >-
|
|
764
|
+
Owner-chosen alphanumerics — the reg 27(2)(a)(ii) proviso does not
|
|
765
|
+
apply to reg 28, which is why vowels and Q are admitted here and
|
|
766
|
+
nowhere else in this file. The Western Cape Government's own worked
|
|
767
|
+
examples include "JOHNNY2 - WP" and "RUN2ME - WP". A match is a
|
|
768
|
+
WELL-FORMEDNESS claim and not an availability claim: whether a
|
|
769
|
+
particular combination is free is a register question no regex can
|
|
770
|
+
answer.
|
|
771
|
+
progression: "owner-chosen; availability-checked on application (form SLN1)"
|
|
772
|
+
design:
|
|
773
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
774
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
775
|
+
foreground: "#000000"
|
|
776
|
+
rear_differs: false
|
|
777
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
778
|
+
sources:
|
|
779
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 28(1) MEC may establish a personalised licence number system; reg 28(3) issued on application on conditions and fees the MEC determines; reg 28A cancellation"
|
|
780
|
+
- "https://www.westerncape.gov.za/mobility/service/applying-special-motor-vehicle-number-plates # Western Cape Government, verbatim: 'Personalised number plates contain the letters WP (Western Province) at the end of the number plate'; the fee table prices 1, 2, 3 and 'All others, up to a maximum of seven alpha and/or numeric characters'; form SLN1; manufacturer Uniplate Group; accessed 2026-08-02"
|
|
781
|
+
notes: >-
|
|
782
|
+
WESTERN CAPE personalised numbers — one to seven owner-chosen
|
|
783
|
+
alphanumerics followed by WP. This is the ONLY context in which "WP"
|
|
784
|
+
appears on a Western Cape plate, because the province issues its ordinary
|
|
785
|
+
numbers under the registering-authority limb. The province distinguishes
|
|
786
|
+
PERSONALISED numbers (arbitrary characters + WP) from DISCRETE numbers
|
|
787
|
+
(short serials inside an existing registering-authority mark, e.g. "CY 6"
|
|
788
|
+
or "CFM 2332"); discrete numbers are modelled as short serials of
|
|
789
|
+
za-wc-ra-mark, not here, because they carry a town mark and not WP.
|
|
790
|
+
|
|
791
|
+
- id: za-fs-personalised
|
|
792
|
+
class: personalized
|
|
793
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
794
|
+
period: { start: 2002 }
|
|
795
|
+
period_evidence: enabling-instrument
|
|
796
|
+
matching: strict
|
|
797
|
+
format:
|
|
798
|
+
pattern: "LLL FS"
|
|
799
|
+
regex: '\A[A-Z0-9]{1,7}[- ]?FS\z'
|
|
800
|
+
charset:
|
|
801
|
+
notes: >-
|
|
802
|
+
Free State Provincial Notice 52 of 2002 para 2(1) as substituted by
|
|
803
|
+
Provincial Notice 278 of 2006, verbatim: a personalised licence
|
|
804
|
+
number "must consist of - (a) at least one, but not more than seven
|
|
805
|
+
letters, followed by the letters FS; or (b) a combination of a
|
|
806
|
+
maximum of seven letters and figures, followed by the letters FS".
|
|
807
|
+
Para 2(2) excludes any combination "that occur in the general licence
|
|
808
|
+
number system, the motor dealer number system, the temporary or
|
|
809
|
+
special permit number system of the Free State Province or be
|
|
810
|
+
offensive of nature to any person or group of persons in the
|
|
811
|
+
community" — an exclusion no regex can express, so a match here is a
|
|
812
|
+
well-formedness claim and not an availability claim.
|
|
813
|
+
design:
|
|
814
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
815
|
+
plate_variants:
|
|
816
|
+
- { w: 305, h: 165, unit: mm, note: "Free State PN 278 of 2006: seven characters + FS may be displayed only on 520 x 113 mm and 305 x 165 mm plates, and the 305 x 165 mm plate uses FE modified 60 mm rather than 75 mm" }
|
|
817
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
818
|
+
foreground: "#006400"
|
|
819
|
+
emblem:
|
|
820
|
+
present: true
|
|
821
|
+
rendered: placeholder
|
|
822
|
+
note: "the same cheetah/sky/mountain/hills landscape as the ordinary Free State plate (PN 52 of 2002 Schedule 1)"
|
|
823
|
+
rear_differs: false
|
|
824
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
825
|
+
sources:
|
|
826
|
+
- "https://www.policeroadstransport.fs.gov.za/wp-content/uploads/2012/09/Personalised-licence-number-system-for-the-Free-State-2002.pdf # Free State Provincial Notice 52 of 2002, Provincial Gazette 25 of 9 April 2002, made under regs 28, 28A and 29(2): para 2(1) the six-character grammar; para 3 'dark green letters and figures on a white retro-reflective surface with a landscape as set out in Schedules 1 and 2'; para 19 metal plates only; para 21 'This notice shall take effect on 10 April 2002'; Schedule 2 para 1 FE modified 75 mm"
|
|
827
|
+
- "https://www.policeroadstransport.fs.gov.za/wp-content/uploads/2012/09/Amendment-of-personal-licence-number-system-2006.pdf # Free State Provincial Notice 278 of 2006, Provincial Gazette 102 of 15 December 2006: six -> seven characters, the 520 x 113 / 305 x 165 restriction, FE modified 60 mm on the smaller plate, metal OR plastic; para 4 'This Notice takes effect on 1 April 2007'"
|
|
828
|
+
- "https://www.policeroadstransport.fs.gov.za/wp-content/uploads/2012/09/Amendment-of-personalised-and-licence-number-plates-for-the-Free-State-2010.pdf # Free State Provincial Notice 16 of 2010: repeals the validation label and the plate-validity period"
|
|
829
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 28; reg 28(4A) and reg 27(2)(bA), both inserted by r. 2-3 of GNR.779 w.e.f. 4 June 2002, which give the Free State MEC alone the power to determine the TYPE of number plate notwithstanding reg 35"
|
|
830
|
+
notes: >-
|
|
831
|
+
FREE STATE personalised numbers — DARK GREEN characters on white with the
|
|
832
|
+
cheetah landscape, from 10 April 2002. The fully-primary series in this
|
|
833
|
+
file and the one that earns `enabling-instrument`: Provincial Notice 52
|
|
834
|
+
of 2002 creates the system, dates its own commencement, and prints its
|
|
835
|
+
own grammar. The grammar was SIX characters from 10 April 2002 and became
|
|
836
|
+
SEVEN on 1 April 2007 (PN 278 of 2006); the regex carries the current
|
|
837
|
+
seven, and a plate of exactly seven characters therefore cannot predate
|
|
838
|
+
April 2007. The Free State is also the one province with a bespoke
|
|
839
|
+
national carve-out: GNR.779 of 4 June 2002 inserted reg 27(2)(bA) and reg
|
|
840
|
+
28(4A) to let the Free State MEC determine the TYPE of plate
|
|
841
|
+
notwithstanding reg 35.
|
|
842
|
+
|
|
843
|
+
- id: za-gp-personalised
|
|
844
|
+
class: personalized
|
|
845
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
846
|
+
period: { start: 2000 }
|
|
847
|
+
period_evidence: instrument-in-force
|
|
848
|
+
matching: strict
|
|
849
|
+
format:
|
|
850
|
+
pattern: "LLL GP"
|
|
851
|
+
regex: '\A[A-Z0-9]{1,7}[- ]?GP\z'
|
|
852
|
+
charset:
|
|
853
|
+
notes: >-
|
|
854
|
+
Owner-chosen alphanumerics + GP. The seven-character maximum is
|
|
855
|
+
NOT stated on the form's face; it is inferred from the form's own
|
|
856
|
+
document reference ("dvds/Aansoekspe2/(7karakters)han/2") and
|
|
857
|
+
corroborated by Wikipedia, which reports seven for Gauteng,
|
|
858
|
+
KwaZulu-Natal and the Western Cape and six elsewhere. Treated as
|
|
859
|
+
secondary and flagged. As with every personalised series, a match is
|
|
860
|
+
a well-formedness claim and not an availability claim, and the regex
|
|
861
|
+
necessarily also accepts an ordinary GP-suffixed licence number of
|
|
862
|
+
the same length — the two systems share a terminal mark and only the
|
|
863
|
+
register can separate them.
|
|
864
|
+
design:
|
|
865
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
866
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
867
|
+
foreground: "#000000"
|
|
868
|
+
rear_differs: false
|
|
869
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
870
|
+
sources:
|
|
871
|
+
- "https://cmbinary.gauteng.gov.za/Media?path=transport/Documents/Documents/GP%20Application%20Form%20-%20Personalised%20Number%20Plate.pdf&Item=658&Type=Documents&Location=/transport # Gauteng Province form PRN1-GP 'Application for special/personalised registration number for motor vehicle': three choice fields each pre-printed with 'G P'; the applicant marks each character N (number) or A (alphabet); the form's own footer reference reads '(7karakters)'; accessed 2026-08-02"
|
|
872
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 28(1),(3),(5); reg 28A cancellation and surrender"
|
|
873
|
+
notes: >-
|
|
874
|
+
GAUTENG personalised numbers — owner-chosen characters followed by GP.
|
|
875
|
+
A DATING CURIOSITY WORTH KEEPING: the province's own current form still
|
|
876
|
+
cites "Road Traffic Act, 1989, Sec. 14" in its heading, an Act the NRTA
|
|
877
|
+
1996 replaced. That stale citation is itself evidence that the Gauteng
|
|
878
|
+
personalised system predates the NRTR 2000 and was carried forward rather
|
|
879
|
+
than created by it — which is exactly why period_evidence here is
|
|
880
|
+
instrument-in-force and not enabling-instrument.
|
|
881
|
+
|
|
882
|
+
# =========================================================================
|
|
883
|
+
# E. THE REG 27(5) SPECIAL CLASSES. These are national, not provincial, and
|
|
884
|
+
# they are the reason a South African plate's LAST letter must never be
|
|
885
|
+
# decoded as geography.
|
|
886
|
+
# =========================================================================
|
|
887
|
+
|
|
888
|
+
- id: za-government-g
|
|
889
|
+
class: government
|
|
890
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
891
|
+
period: { start: 2000 }
|
|
892
|
+
period_evidence: instrument-in-force
|
|
893
|
+
matching: strict
|
|
894
|
+
format:
|
|
895
|
+
pattern: "GLL 999 G"
|
|
896
|
+
regex: '\AG[A-Z]{2} ?\d{3} ?G\z'
|
|
897
|
+
charset:
|
|
898
|
+
notes: >-
|
|
899
|
+
NO STRICT TWIN: the reg 27(2)(a)(ii) proviso governs the provincial
|
|
900
|
+
licence NUMBER SYSTEMS and does not reach reg 27(5), so no sourced
|
|
901
|
+
letter restriction applies to the two middle letters.
|
|
902
|
+
design:
|
|
903
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
904
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
905
|
+
foreground: "#000000"
|
|
906
|
+
rear_differs: false
|
|
907
|
+
note: >-
|
|
908
|
+
Reg 35(2)(b)-(c) admits a yellow surface with black characters as an
|
|
909
|
+
alternative for any class, and government fleets are commonly reported
|
|
910
|
+
on yellow; no instrument fixing the government colour nationally was
|
|
911
|
+
located. The Free State prescribes RED characters on white with the
|
|
912
|
+
provincial coat of arms for vehicles owned by the Free State
|
|
913
|
+
Provincial Government (PN 51 of 2002 para 5(b)) — a province-level
|
|
914
|
+
design on this national format.
|
|
915
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
916
|
+
sources:
|
|
917
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(5)(a), verbatim: the licence number of a motor vehicle 'the owner of which is a department of State, may consist of— (i) the licence number allocated to the vehicle upon licensing thereof; (ii) the letter G followed by two letters, three figures, and the letter G; or (iii) any other licence number determined by the chief executive officer by notice in the Gazette'"
|
|
918
|
+
- "https://www.gov.za/sites/default/files/gcis_document/201409/37542gen287.pdf # GG 37542 GN 287 of 9 April 2014 reproducing reg 27(5)(a) identically"
|
|
919
|
+
- "https://www.policeroadstransport.fs.gov.za/wp-content/uploads/2012/09/Licence-number-plate-for-the-Free-State-2002.pdf # PN 51 of 2002 para 5(b): red letters and figures on white with the Free State coat of arms for provincial-government vehicles"
|
|
920
|
+
notes: >-
|
|
921
|
+
DEPARTMENT OF STATE, G + two letters + three figures + G. Reg 27(5)(a) is
|
|
922
|
+
PERMISSIVE — "may consist of" — and limb (i) expressly allows a State
|
|
923
|
+
department to keep the ordinary licence number allocated on licensing, so
|
|
924
|
+
a government vehicle need not carry this format at all and a G-suffix
|
|
925
|
+
match is a sufficient but not necessary test for state ownership. This
|
|
926
|
+
series is also the reason the reg 27(2)(a)(ii) proviso forbids G as the
|
|
927
|
+
first letter of an ordinary licence number: the two rules exist to keep
|
|
928
|
+
the G space clear of each other.
|
|
929
|
+
|
|
930
|
+
- id: za-police-b
|
|
931
|
+
class: police
|
|
932
|
+
categories: [car, van, truck, bus, motorcycle]
|
|
933
|
+
period: { start: 2000 }
|
|
934
|
+
period_evidence: instrument-in-force
|
|
935
|
+
matching: strict
|
|
936
|
+
format:
|
|
937
|
+
pattern: "LLL 999 B"
|
|
938
|
+
regex: '\A[A-Z]{3} ?\d{3} ?B\z'
|
|
939
|
+
charset: { notes: "No strict twin: the reg 27(2)(a)(ii) proviso does not reach reg 27(5)(b)." }
|
|
940
|
+
design:
|
|
941
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
942
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
943
|
+
foreground: "#000000"
|
|
944
|
+
rear_differs: false
|
|
945
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
946
|
+
sources:
|
|
947
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(5)(b), verbatim: the licence number of a motor vehicle 'the owner of which is the South African Police Service, may consist of three letters, three figures, followed by the letter B'; reg 21A/25(2)(f) confirms a SAPS-allocated number is recorded as such"
|
|
948
|
+
- "https://www.gov.za/sites/default/files/gcis_document/201409/37542gen287.pdf # GG 37542 GN 287 of 9 April 2014 reproducing reg 27(5)(b) identically"
|
|
949
|
+
notes: >-
|
|
950
|
+
SOUTH AFRICAN POLICE SERVICE, three letters + three figures + B. The
|
|
951
|
+
shape is identical to a provincial 3+3 number and the ONLY thing that
|
|
952
|
+
distinguishes it is the terminal letter, which is why the decode table
|
|
953
|
+
carries B in its `not_geographic` list. Like reg 27(5)(a) this limb is
|
|
954
|
+
permissive ("may consist of"), so SAPS vehicles on ordinary provincial
|
|
955
|
+
numbers exist. Metropolitan police departments are municipal, not SAPS,
|
|
956
|
+
and are not covered by this limb.
|
|
957
|
+
|
|
958
|
+
- id: za-zulu-royal-zk
|
|
959
|
+
class: government
|
|
960
|
+
categories: [car, van, truck, bus]
|
|
961
|
+
period: { start: 2000 }
|
|
962
|
+
period_evidence: instrument-in-force
|
|
963
|
+
matching: strict
|
|
964
|
+
format:
|
|
965
|
+
pattern: "ZK 999"
|
|
966
|
+
regex: '\AZK ?[A-Z0-9]{1,6}\z'
|
|
967
|
+
regex_statutory: '\AZK ?[A-Z0-9]+\z'
|
|
968
|
+
charset:
|
|
969
|
+
notes: >-
|
|
970
|
+
Reg 27(5)(c) sets NO LENGTH LIMIT — "the letters ZK followed by
|
|
971
|
+
figures or letters or combination of figures and letters" — so the
|
|
972
|
+
statutory twin is unbounded and `regex` is deliberately narrower at
|
|
973
|
+
six characters, which is the longest serial any South African
|
|
974
|
+
provincial system issues. Narrower than the statute is still
|
|
975
|
+
`strict` (PRD-PLATES § 2.7); the outer legal bound is in
|
|
976
|
+
`regex_statutory`, which is exactly what that field is for.
|
|
977
|
+
design:
|
|
978
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
979
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
980
|
+
foreground: "#000000"
|
|
981
|
+
rear_differs: false
|
|
982
|
+
note: >-
|
|
983
|
+
Reg 27(2)(bB) and reg 28(4B), both inserted by r. 5(b) and r. 6 of
|
|
984
|
+
GNR.589 of 27 May 2009, empower the KwaZulu-Natal MEC to determine a
|
|
985
|
+
distinct logo or landscape, letter type, letter colour and sheeting
|
|
986
|
+
colour for these numbers. No such determination was located, so the
|
|
987
|
+
design here is the reg 35 default and is not a claim about the
|
|
988
|
+
plates actually issued.
|
|
989
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
990
|
+
sources:
|
|
991
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(5)(c) as substituted by GNR.865 of 2007: 'set aside for the use by the King of the Zulu Nation, shall consist of the letters ZK followed by figures or letters or combination of figures and letters'; reg 27(2)(bB) and reg 28(4B) inserted by GNR.589 of 27 May 2009"
|
|
992
|
+
- "https://www.gov.za/sites/default/files/gcis_document/201409/37542gen287.pdf # GG 37542 GN 287 of 9 April 2014 reproducing reg 27(5)(c) identically"
|
|
993
|
+
notes: >-
|
|
994
|
+
NUMBERS SET ASIDE FOR THE KING OF THE ZULU NATION — the only South
|
|
995
|
+
African series tied to a traditional office rather than a government
|
|
996
|
+
department, and a genuine schema oddity: ZK is a PREFIX where every other
|
|
997
|
+
special class in reg 27(5) is a suffix. Classed `government` because the
|
|
998
|
+
vocabulary has no traditional-monarchy class and the series is a state
|
|
999
|
+
set-aside; flagged for the verifier in case a class PR is preferred. The
|
|
1000
|
+
current wording was substituted by GNR.865 of 28 September 2007, which
|
|
1001
|
+
means an earlier ZK provision existed in the 2000 text — hence
|
|
1002
|
+
instrument-in-force at 2000 rather than a 2007 creation.
|
|
1003
|
+
|
|
1004
|
+
- id: za-diplomatic-d
|
|
1005
|
+
class: diplomatic
|
|
1006
|
+
categories: [car, van, truck, bus, motorcycle]
|
|
1007
|
+
period: { start: 2000 }
|
|
1008
|
+
period_evidence: instrument-in-force
|
|
1009
|
+
# RECALL-ONLY (PRD-PLATES § 2.7): reg 27(5)(d) delegates the ENTIRE
|
|
1010
|
+
# grammar to the Director-General of Foreign Affairs and fixes exactly one
|
|
1011
|
+
# thing about it — that the number "shall end in the letter 'D'". No
|
|
1012
|
+
# DIRCO determination was located, so the regex below is a shape net built
|
|
1013
|
+
# around the one sourced fact. A match says "this string ends in D and has
|
|
1014
|
+
# a diplomatic-looking shape", never "this is a valid South African
|
|
1015
|
+
# diplomatic number".
|
|
1016
|
+
matching: recall-only
|
|
1017
|
+
format:
|
|
1018
|
+
pattern: "LLL 999 D"
|
|
1019
|
+
regex: '\A(?:[A-Z] )?[A-Z]{1,4} ?\d{1,4} ?D\z'
|
|
1020
|
+
pattern_note: >-
|
|
1021
|
+
The pattern shows one representative shape. The optional leading
|
|
1022
|
+
single letter in the regex accommodates the widely-reported class
|
|
1023
|
+
letter (D diplomatic, C consular, X and S for other categories) that
|
|
1024
|
+
precedes the serial on the current style; that class-letter set is
|
|
1025
|
+
NOT sourced to an instrument and is recorded as a gap, which is the
|
|
1026
|
+
second reason this series is recall-only.
|
|
1027
|
+
design:
|
|
1028
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
1029
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
1030
|
+
foreground: "#000000"
|
|
1031
|
+
rear_differs: false
|
|
1032
|
+
note: >-
|
|
1033
|
+
Reg 35(2)(c) permits dark red and dark green characters on a white
|
|
1034
|
+
surface, and diplomatic plates are widely reported to use exactly
|
|
1035
|
+
those two colours to separate the diplomatic from the consular
|
|
1036
|
+
category. That correspondence is plausible and UNSOURCED; the default
|
|
1037
|
+
black is recorded instead of guessing.
|
|
1038
|
+
region_encoding: none
|
|
1039
|
+
region_encoding_note: >-
|
|
1040
|
+
A diplomatic number carries no provincial mark and no registering-
|
|
1041
|
+
authority mark: reg 27(5)(d) takes it out of the provincial systems
|
|
1042
|
+
entirely. Decoding its letters as geography is the single most likely
|
|
1043
|
+
parse-API error in South Africa.
|
|
1044
|
+
sources:
|
|
1045
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 27(5)(d), verbatim: the licence number of a motor vehicle the owner of which is '(i) a foreign government, diplomat representing a foreign government, an international or inter-governmental organisation; (ii) a member of staff or suite of such government or organisation; or (iii) any other person or class of person determined by the Minister of Foreign Affairs, shall consist of such letters and figures as are determined by the Director-General: Department of Foreign Affairs but shall end in the letter \"D\"'"
|
|
1046
|
+
- "https://www.gov.za/sites/default/files/gcis_document/201409/37542gen287.pdf # GG 37542 GN 287 of 9 April 2014 reproducing reg 27(5)(d) identically"
|
|
1047
|
+
notes: >-
|
|
1048
|
+
DIPLOMATIC AND CONSULAR CORPS. The one certain fact is the terminal D,
|
|
1049
|
+
and it is the whole of what the Regulations say. The Department of
|
|
1050
|
+
Foreign Affairs (now DIRCO) determination that carries the real grammar —
|
|
1051
|
+
country codes, class letters, serial length — was not located in this
|
|
1052
|
+
pass and is the highest-value single missing document for South Africa
|
|
1053
|
+
after the provincial reg 27(1) notices. Until it lands this series is a
|
|
1054
|
+
recall net and is labelled as one.
|
|
1055
|
+
|
|
1056
|
+
# =========================================================================
|
|
1057
|
+
# F. MOTOR TRADE (DEALER) NUMBERS — reg 71(2). Two shapes, one per limb,
|
|
1058
|
+
# and they mirror the two provincial systems exactly.
|
|
1059
|
+
# =========================================================================
|
|
1060
|
+
|
|
1061
|
+
- id: za-dealer-a
|
|
1062
|
+
class: dealer
|
|
1063
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
1064
|
+
period: { start: 2000 }
|
|
1065
|
+
period_evidence: instrument-in-force
|
|
1066
|
+
matching: strict
|
|
1067
|
+
format:
|
|
1068
|
+
pattern: "ALL 999 LL"
|
|
1069
|
+
regex: '\AA[A-Z]{2} ?\d{3} ?[A-Z]{1,2}\z'
|
|
1070
|
+
regex_strict: '\AA[BCDFGHJKLMNPRSTVWXYZ]{2} ?\d{3} ?(?:EC|FS|GP|L|MP|NC|NW|WP|ZN)\z'
|
|
1071
|
+
charset:
|
|
1072
|
+
notes: >-
|
|
1073
|
+
Reg 71(2), closing words, verbatim: "but shall not consist of vowels,
|
|
1074
|
+
except the letter 'A' as referred to in paragraph (a), or the letter
|
|
1075
|
+
'Q'." So the leading A is a sanctioned vowel and the two following
|
|
1076
|
+
letters are drawn from the same twenty-letter set as an ordinary
|
|
1077
|
+
licence number — but WITHOUT the leading-G exclusion, which reg 71
|
|
1078
|
+
does not repeat. The strict twin also closes the provincial-mark
|
|
1079
|
+
position to the nine marks in the decode table, six of which are
|
|
1080
|
+
themselves secondary-wikipedia.
|
|
1081
|
+
design:
|
|
1082
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
1083
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
1084
|
+
foreground: "#000000"
|
|
1085
|
+
rear_differs: false
|
|
1086
|
+
note: >-
|
|
1087
|
+
Reg 82(1): a motor trade number is displayed on a reg 35 plate but ONE
|
|
1088
|
+
plate only, to the rear, inside the rear window where there is one, and
|
|
1089
|
+
reg 82(4) forbids affixing it permanently to any vehicle — the plate is
|
|
1090
|
+
bound to the BUSINESS, not the vehicle. The Free State prescribes dark
|
|
1091
|
+
blue characters on white with the provincial landscape for dealer
|
|
1092
|
+
plates (PN 51 of 2002 para 4(b)).
|
|
1093
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
1094
|
+
sources:
|
|
1095
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 71(2)(a), verbatim: a motor trade number system 'shall consist of— (a) the letter \"A\" followed by two letters, three figures and the licence mark of the province concerned as contemplated in regulation 27 (1)'; reg 82(1),(4) display and non-permanence"
|
|
1096
|
+
- "https://www.policeroadstransport.fs.gov.za/wp-content/uploads/2012/09/Licence-number-plate-for-the-Free-State-2002.pdf # PN 51 of 2002 para 4(b): dark blue letters and figures on white with the landscape, for motor dealer plates"
|
|
1097
|
+
notes: >-
|
|
1098
|
+
MOTOR TRADE NUMBERS on the provincial limb — A + two letters + three
|
|
1099
|
+
figures + provincial mark. Bound to a registered motor dealer,
|
|
1100
|
+
manufacturer, builder or importer, licensed annually under regs 73-77 and
|
|
1101
|
+
cancellable under reg 80. The A prefix is why A survives the vowel ban in
|
|
1102
|
+
this one series and nowhere else, and it makes a dealer number
|
|
1103
|
+
instantly separable from an ordinary 3+3 provincial number.
|
|
1104
|
+
|
|
1105
|
+
- id: za-dealer-figures
|
|
1106
|
+
class: dealer
|
|
1107
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
1108
|
+
period: { start: 2000 }
|
|
1109
|
+
period_evidence: instrument-in-force
|
|
1110
|
+
matching: strict
|
|
1111
|
+
format:
|
|
1112
|
+
pattern: "9999 LL"
|
|
1113
|
+
regex: '\A\d{3,4} ?[A-Z]{1,3}\z'
|
|
1114
|
+
charset:
|
|
1115
|
+
notes: >-
|
|
1116
|
+
No strict twin: the trailing group is a registering-authority mark
|
|
1117
|
+
and no closed table of those exists (see za-wc-ra-mark). Reg 71(2)'s
|
|
1118
|
+
vowel/Q exclusion is written for the SYSTEM's letters and its
|
|
1119
|
+
interaction with an allocated mark that already contains a vowel
|
|
1120
|
+
(CA, for instance) is not resolved by the text — recorded, not
|
|
1121
|
+
guessed.
|
|
1122
|
+
design:
|
|
1123
|
+
plate: { w: 520, h: 113, unit: mm }
|
|
1124
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
1125
|
+
foreground: "#000000"
|
|
1126
|
+
rear_differs: false
|
|
1127
|
+
region_encoding: "plates/_decode/za-licence-marks.yml"
|
|
1128
|
+
region_encoding_mechanism: >-
|
|
1129
|
+
Here the mark TRAILS the figures, which is the mirror image of an
|
|
1130
|
+
ordinary registering-authority number (mark first, figures after). A
|
|
1131
|
+
parser must therefore not assume mark position from the presence of a
|
|
1132
|
+
mark: "1234 CA" is a Western Cape dealer number and "CA 1234" is an
|
|
1133
|
+
ordinary Cape Town registration.
|
|
1134
|
+
sources:
|
|
1135
|
+
- "https://disasterlaw.ifrc.org/sites/default/files/media/disaster_law/2021-06/%20ROAD%20TRAFFIC%20REGULATIONS,%202000.pdf # reg 71(2)(b), verbatim: 'three or four figures followed by the licence mark of the registering authority as contemplated in regulation 27 (2) (a) (i), but shall not consist of vowels, except the letter \"A\" as referred to in paragraph (a), or the letter \"Q\"'"
|
|
1136
|
+
notes: >-
|
|
1137
|
+
MOTOR TRADE NUMBERS on the registering-authority limb — three or four
|
|
1138
|
+
figures followed by the town mark. The counterpart of za-dealer-a for the
|
|
1139
|
+
provinces that never adopted a suffix system, and the only South African
|
|
1140
|
+
series where the geographic token comes LAST while the serial comes
|
|
1141
|
+
FIRST. Distinct from za-dealer-a in both shape and statutory limb.
|