Регулярное выражение для числа - PullRequest
0 голосов
/ 25 августа 2010

Пожалуйста, помогите мне сделать регулярное выражение со следующим правилом -

  1. Максимальное число может быть 9999,99
  2. Должен быть неотрицательным
  3. Не может быть 0, но действителен 0,01 и т. Д.
  4. Итак, мне нужно неотрицательное число от 0,01 до 999,99

Ответы [ 3 ]

3 голосов
/ 25 августа 2010

Э-э, это не совсем работа для Regexp, но она все равно работает с ней:

/(\d{2,4}(\.(\d[1-9])|([1-9]\d))?)|[1-9]/

A Более строгая оценка будет:

/^([1-9]\d{,3}(\.\d{1,2})?)?|(0\.([1-9]\d?)|(0\.0[1-9]))$/

Не принимая начальные нули, но учитывая только один десятичный знак: «0,1». Имейте в виду, десятичные дроби необязательны.

Тем не менее, я предлагаю использовать математические операции: преобразовать в число с плавающей точкой и затем проверить:

if((num > 0) && (num < 100000)) {...}

Вы можете использовать sprintf(), чтобы получить необходимое представление, например, ограничение количества десятичных знаков и т. Д.

2 голосов
/ 25 августа 2010

Зачем вам нужно регулярное выражение для этого?Просто конвертируйте вашу строку в двойную и проверьте, что она находится в диапазоне от 0,01 до 9999,99.

0 голосов
/ 25 августа 2010

Поскольку люди уже ответили, вы можете довольно легко получить цифры, используя [0-9] или \ d.Используя {min, max}, вы можете указать, сколько символов или набора символов нужно получить за совпадение.

Вот хорошая справка: http://www.regular -expressions.info / reference.html

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