RegEx Числовой чек - PullRequest
       6

RegEx Числовой чек

12 голосов
/ 25 марта 2009

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

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

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

Ответы [ 4 ]

16 голосов
/ 25 марта 2009

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

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

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

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

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

2 голосов
/ 25 марта 2009

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

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

  1. Распознавание числового шаблона (^\d+$).

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

0 голосов
/ 25 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...