Na wat gepuzzel kom ik tot de volgende regex:

^(\d{1,5})([A-Za-z])?([-]{1}[0-9A-Za-z]{1,4})?([-]{1}[0-9A-Za-z]{1,4})?$

123–A3, 125 A, 1279-appel, 9999ABCD, 44bis, X-737 ← zijn fout
123a-M, 19p-8, 1A-847, 29, 31a, 44-bis, 10-BY, 10-PG3, 54-CORS, 1-TRAF, 201-121, 3-0072 ← worden goedgekeurd.
Iemand een beter idee?

Edit: aanpassing \d+ → \d{1,5}