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.