Laravel проверяет десятичную дробь 0-99,99

Laravel не имеет проверки для decimal, поэтому мне нужен regex или другой метод проверки для проверки числового значения 0 - 99.99

я пытался

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

Я получаю сообщение "неверный формат" при попытке ввести 0.05 или неизвестные модификаторы для preg_match

приветствуется любая помощь с regex, необходимая для проверки десятичного числа в laravel (с дополнительными значениями до или после десятичного


person Kender    schedule 19.04.2015    source источник
comment
Вы уверены, что between:0,99.99 не работает?   -  person lukasgeiter    schedule 19.04.2015
comment
да, я думаю, я над этим подумал ... демонстрационные значения на сайте никогда не использовали десятичные дроби, поэтому я никогда не думал проверять   -  person Kender    schedule 19.04.2015


Ответы (4)


Правило проверки Laravel between на самом деле довольно мощное и может также обрабатывать десятичные значения. Поэтому нет необходимости использовать регулярное выражение, просто сделайте это:

'required|between:0,99.99'
person lukasgeiter    schedule 19.04.2015
comment
не работает в этом случае ['nullable', 'между: 1,99999999.99', 'regex: / ^ (? =. +) (?: [1-9] \ d * | 0)? (?: \. \ г +)? $ / '] - person manish; 25.03.2019

Правило laravel (5?) Между всегда получает, что оно должно анализировать десятичное число, вам нужно добавить к нему числовое значение для правильной проверки

'required|numeric|between:0,99.99',
person grisgruis    schedule 23.02.2016
comment
Это не удается на 0,5 - person zeros-and-ones; 26.02.2017
comment
поздний ответ, но вы можете попробовать 'required|numeric|between:0.00,99.99', - person jdme; 10.10.2017
comment
Что на самом деле заставило меня это работать, так это то, что мой запрос AJAX был строкой, и для правильной проверки как числовой мне пришлось преобразовать его как float до проверки: $request->merge(['inputName' => (float) $request->input('inputName')]; required|numeric|0.01,9999.99 - person cmeza; 24.08.2018
comment
Осторожно: на основе кода 'between': github.com/laravel/framework/blob/5.8/src/Illuminate/Validat‌ ion /… Вы не проверяете фактическое количество десятичных разрядов, только то, что число находится между двумя реальные значения: 0 и 9999.9900000 ... Если вы попытаетесь проверить 9999.981, оно будет принято (и, вероятно, округлилось до 9999.98 после), но если вы попробуете с 9999.991, это не удастся. - person ecdani; 29.08.2019

Это работает для меня:

 function rules(){'field' => ['required','numeric', 'min:1','max:99.99', 'regex:/^\d+(\.\d{1,2})?$/']}

А если вы хотите настроить сообщение, то:

public function messages()
   {
       return [
        'field.regex' => 'custom your message'
      ];
   }
person Mario Inostroza    schedule 01.05.2020
comment
Отлично работает - person Lefty; 14.05.2020

это будет работать для числа, допускающего две десятичные дроби:

function rules(){

   return [
   'field_name'=> array('regex:/^(?:d*.d{1,2}|d+)$/','min:1','max:10')
        ]; 
}
person Neeraj Negi    schedule 27.10.2015