Хорошо, я думаю, что я исправил это в соответствии с вашей спецификацией:
1+0+{01-16}+{01-36}+{001-129}+{01-36}+W+{1-6}+0+{0-9}
Здесь это расширено некоторыми комментариями:
^
1
0
[0|2-9] // match 0 or 2-9 (is this missing from your spec?)
(0[1-9]|1[0-6]) // match 01-09 or 10-16
(0[1-9]|[12][0-9]|3[0-6]) // match 01-09 or 10-29 or 30-36
(00[1-9]|0[1-9][0-9]|1[0-2][0-9]) // match 001-009 or 010-099 or 100-129
(0[1-9]|[12][0-9]|3[0-6]) // match 01-09 or 10-29 or 30-36
W
[1-6]
0
[0-9]
$
И здесь все это собрано вместе:
^10[0|2-9](0[1-9]|1[0-6])(0[1-9]|[12][0-9]|3[0-6])(00[1-9]|0[1-9][0-9]|1[0-2][0-9])(0[1-9]|[12][0-9]|3[0-6])W[1-6]0[0-9]$