SunRiser
@SunRiser

Регулярное выражение от 1 до 99999 и от 99999 до 999999?

Всем привет! Подскажите, как написать 2 регулярных выражения проверяющая находится ли число в пуле. Числа будут целые, без нулей вначале. Т.е. 1,2,3...10000,10001,...и.т.д
1) от 1 до 99999
2) от 99999 до 999999
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
dollar
@dollar
Можно сделать это разными способами.

Один из способов:
  1. сначала научиться код всего приложения записывать в виде единого рег. выражения
  2. а затем уже легко будет сделать такой простой ограничитель

spoiler
Если более серьезно, то рег. выражения работают с символами. Поэтому, для начала, можно разбить задачу на обработку нескольких случаев по количеству символов. И в каждом случае составлять отдельные условия.

Например, простой случай числа от 1 до 99. Здесь всего два варианта: однозначное или двузначное число. Таким образом:
^(\d{1}|\d{2})$
Далее в каждом варианте смотрим на ограничения. Например, в первом случае цифры у нас от 1 до 9, то есть ноль нельзя. Во втором случае первая цифра не может быть ноль. Получается уже сложнее:
^([1-9]|[1-9]\d)$
Дальше больше. Если диапазон от 1 до 999, то будет уже три случая.
^([1-9]|[1-9]\d|[1-9]\d\d)$
Если диапазон от 7 до 999, то логика меняется:
^([7-9]|[1-9]\d|[1-9]\d\d)$
И так далее.
В общем, получается монстр, разбирающий число посимвольно. Таким образом, можно выяснить любой диапазон, но не ясно, зачем так делать.

Если есть строка и нужно выяснить диапазон, то лучше привести к числу и просто сравнить в коде. Что-то вроде такого (зависит от языка программирования):
tonumber(str) > 0 and tonumber(str) < 100000
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы