Как составить регулярное выражение для диапазона чисел с плавающей точкой?
Помогите, плз, под конец дня голова совсем не варит((
Нужна регулярка для диапазона чисел Х, где 0<X<=100
Т.е. 0 не подходит, а 0.00001 подходит.
И, соответственно 100 подходит, а 100. или 100.0 и т.д. уже не подходит.
Пока осилил только такую: ^(?:100(?:\.0*)?|[1-9]?\d(?:\.\d*)?|\.\d+)$
Но она пропускает ноль, а так низзя...
Ох уж эти любители забивать гвозди... нет, не микроскопом, а, скорее, резиновым членом. Наверняка можно в некоторой степени, но очень неудобно и травмоопасно.
Yevhenii, я о том, что регулярные выражения не предназначены для такой задачи в той же степени, в какой дилдо не предназначено для строительно-монтажных работ и имеет не очень высокую эффективность в этом, а также плохую эргономику. Лучше взять "молоток" и применять по назначению.
состав: 0?\.\d*[1-9]\d* - любое число вида "0.хххх" или ".хххх", с тем чтобы среди иксов был хоть один не ноль. 100(\.0*)? - для вариантов "100", "100.", "100.00000" [1-9]\d?(\.\d*)? - однозначные и двузначные числа, с необязательным десятичным хвостом.
если тебе ещё нужна экспоненциальная форма (с буквой E), то могу допилить, но пока влом, там несколько вариантов
Как я понял, тебе не очень нравятся нули в конце дробной части? )) Напр., "1.23400"
Они конечно бесполезны, но в то же время число с ними вполне валидно по всем правилам...
Не, не нравятся. Тем более, если они, как ты точно сказал, бесполезны )))
Да и юзера надо держать в узких рамках, сам понимаешь, иначе понавводит всяких лишних цифер...