Регулярное выражение для чисел от 0.01 до 99.00 в JavaScript

Помогите с созданием регулярного выражения для валидации процентной ставки

Разрабатываю веб-форму с полем “Процентная ставка”, которое должно принимать только значения от 0.01 до 99.00.

Основная проблема заключается в том, что мне нужно исключить числа от 99.01 до 99.99, то есть максимальное значение должно быть строго 99.00.

Примеры корректных значений:

  • 0.01
  • 0.10
  • 1.233
  • 3.20
  • 4.655
  • 5.112
  • 99.00
  • 99.0

Примеры некорректных значений:

  • 00.00
  • 100.134234
  • 99.01234 (это сейчас проходит валидацию, но не должно)
  • 100

Регулярное выражение должно поддерживать до 10 цифр после запятой. Пытался адаптировать существующие решения, но они не учитывают ограничение по верхней границе в 99.00.

Как правильно составить такое регулярное выражение?

Регулярки правда запутывают! Есть способ проще - используй parseFloat() для проверки значений. Намного удобнее и без головной боли с регулярками. Зачем усложнять?

Попробуй это регулярное выражение: /^(?:0\.[0-9]{1,10}|[1-9][0-9]?(?:\.[0-9]{1,10})?|99\.0{1,10})$/. Проверяет три случая - от 0.01 до 0.99, от 1.00 до 98.99 и строго 99.00. Тестировал на похожих проектах, работает отлично. Только не забудь добавить проверку на минимум 0.01, чтоб 0.00 не прошло.

Честно говоря, для таких диапазонов лучше смешать регулярку с обычной проверкой. Сначала /^\d{1,2}\.\d{1,10}$/ для формата, потом parseFloat() чтобы проверить что число <= 99.00 и >= 0.01. Одними регулярками замучаешься, плюс код станет нечитаемым.