^(?:0?\.\d*[1-9]\d*|100(\.0*)?|[1-9]\d?(\.\d*)?)$
состав:
0?\.\d*[1-9]\d* - любое число вида "0.хххх" или ".хххх", с тем чтобы среди иксов был хоть один не ноль.
100(\.0*)? - для вариантов "100", "100.", "100.00000"
[1-9]\d?(\.\d*)? - однозначные и двузначные числа, с необязательным десятичным хвостом.
если тебе ещё нужна экспоненциальная форма (с буквой E), то могу допилить, но пока влом, там несколько вариантов