RegEx Числовая проверка

Я новичок в StackOverflow, поэтому, пожалуйста, дайте мне знать, есть ли лучший способ задать следующий вопрос.

Мне нужно создать регулярное выражение, определяющее, является ли поле в базе данных числовым, и если оно числовое, оно попадает в допустимый диапазон (то есть 1-50). Я пробовал [1-50], который работает, за исключением случаев, когда одному значению числа предшествует 0 (т.е. 06). 06 все равно считаться действительным числом, так как я могу позже преобразовать его в число.

Я очень ценю вашу помощь! Я пытаюсь узнать больше о регулярных выражениях и изучаю все, что могу, из: www.regular-expressions.info. Если вы, ребята, имеете рекомендации других сайтов, чтобы костясь на этом материале, я был бы признателен!

Ответ 1

Попробуйте это

^(0?[1-9])|([1-4][0-9])|(50)$

Идея этого регулярного выражения состоит в том, чтобы разбить проблему на случаи

  • 0? [1-9] заботится о случае с одной цифрой, допускающей опциональный предел 0
  • [1-4] [0-9] позаботится обо всех цифрах от 10 до 49. Это также относится к предыдущему значению 0 на одной цифре
  • 50 заботится о 50

Ответ 2

Регулярные выражения работают над символами (в данном случае цифрами), а не цифрами. Вам нужно иметь отдельный шаблон для каждого числа цифр в вашем шаблоне и комбинировать их с | (оператор OR), как и другие ответы. Однако рассмотрите только проверку того, является ли текст числовым с регулярным выражением (например, [0-9]+), а затем преобразование в целое число и проверка целого числа находится в пределах диапазона.

Ответ 3

Вы не можете легко провести проверку диапазона с помощью регулярных выражений. Вы можете - с некоторой работой - разработать шаблон, который распознает числовой диапазон, но он обычно довольно сложный и трудно модифицируется для немного другого диапазона.

Вам лучше разбить это на две части.

  • Распознать шаблон номера (^\d+$).

  • Проверьте диапазон этого номера в прикладной программе.

Ответ 4

^ 0? [1-50] {1,2} $