^(?=.*[0-9])(?=.*[A-z])[0-9A-z-]{17}$
Должно совпадать "17 буквенно-цифровых символов, допустимые дефисы, должны содержать хотя бы одну букву и хотя бы одно число"
Он будет правильно соответствовать:
ABCDF31U100027743
и правильно отклониться:
AB$DF31U100027743
(и почти любой другой не-буквенно-цифровой char)
но, по-видимому, позволит:
AB^DF31U100027743
![screenshot from Expresso showing the ASCII table, where you can see what the [A-z] range actually covers](/img/02106b0564afaddc5a363fea4daa6806.png)
