Use ? instead of {0,1} and {3} instead of {3,3} where applicable.
Number groups [ß-9] are left as is for readability, i.e. prefer
[1-9][0-9] over [1-9]\d.
The whole expression is evaluated case-insensitive now, so we can omit
the "a-fA-F" and simply use "a-f".
Unit-tests extended accordingly.