【问题标题】:Laravel validate decimal 0-99.99Laravel 验证十进制 0-99.99
【发布时间】:2015-06-26 08:40:42
【问题描述】:

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.05preg_match 的未知修饰符时收到“无效格式”

对于验证laravel 中的小数点所需的regex 的任何帮助,我们将不胜感激(可选值在小数点之前或之后

【问题讨论】:

  • 您确定between:0,99.99 不起作用吗?
  • 确实如此,我想我想多了...网站上的演示值从未使用小数,所以我从没想过要检查

标签: regex validation laravel-5 decimalformat


【解决方案1】:

规则之间的 laravel(5?) 总是让它​​必须解析一个小数,你必须向它添加数字才能正确验证

'required|numeric|between:0,99.99',

【讨论】:

  • 0.5 失败
  • 回复晚了,但你可以试试'required|numeric|between:0.00,99.99',
  • 真正让这个工作对我有用的是我的 AJAX 请求是一个字符串 & 为了正确地验证为数字,我必须将它转换为一个浮动的事先验证:$request->merge(['inputName' => (float) $request->input('inputName')];required|numeric|0.01,9999.99
  • 注意:基于'between'的代码:github.com/laravel/framework/blob/5.8/src/Illuminate/Validat‌​ion/... 您没有验证实际的小数位数,只是该数字介于两个实际值之间:0 和 9999.9900000... 如果您尝试验证 9999.981,它将被接受(并且可能在之后四舍五入为 9999.98),但如果您尝试使用 9999.991,它将失败。跨度>
【解决方案2】:

Laravel between 验证规则实际上非常强大,也可以处理十进制值。所以没有必要使用正则表达式,只需这样做:

'required|between:0,99.99'

【讨论】:

  • 在这种情况下不起作用 ['nullable', 'between:1,99999999.99', 'regex:/^(?=.+)(?:[1-9]\d*|0 )?(?:\.\d+)?$/']
  • 我们最好使用 'gte' 和 'lte' 他们也会接受十进制值
【解决方案3】:

这对我有用:

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

如果你想自定义消息,那么:

public function messages()
   {
       return [
        'field.regex' => 'custom your message'
      ];
   }

【讨论】:

  • 工作得很好
【解决方案4】:

这适用于允许两位小数精度的数字:

function rules(){

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

【讨论】:

    【解决方案5】:

    这适用于带小数和不带小数的数字:

    必需|gte:0|lte:99

    【讨论】:

      【解决方案6】:
       validate()->make([
                  'min_commission' => 'required_with:end_page|numeric|min:0|max:0',
                  'max_commission' => 'required_with:end_page|numeric|min:0|max:99',
      
              ]);
      

      【讨论】:

      • 这个问题有五个现有答案,包括一个获得 98 次投票 的评分最高的答案。您确定尚未提供您的答案吗?如果不是,为什么有人会更喜欢您的方法而不是提议的现有方法?您是否正在利用新功能?是否有更适合您的方法的场景?解释总是有用,但在这里特别很重要。
      猜你喜欢
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多