Э-э, это не совсем работа для Regexp, но она все равно работает с ней:
/(\d{2,4}(\.(\d[1-9])|([1-9]\d))?)|[1-9]/
A Более строгая оценка будет:
/^([1-9]\d{,3}(\.\d{1,2})?)?|(0\.([1-9]\d?)|(0\.0[1-9]))$/
Не принимая начальные нули, но учитывая только один десятичный знак: «0,1».
Имейте в виду, десятичные дроби необязательны.
Тем не менее, я предлагаю использовать математические операции: преобразовать в число с плавающей точкой и затем проверить:
if((num > 0) && (num < 100000)) {...}
Вы можете использовать sprintf()
, чтобы получить необходимое представление, например, ограничение количества десятичных знаков и т. Д.