我试图验证两个小数的双精度,但我不能做到这一点。这是正则表达式和我尝试的错误,我得到:
第一次尝试:
$validation = ['price' => 'regex:[0-9]+('.[0-9][0-9]?)?'];
错误:
preg_match():未知修饰符'+'
第二次尝试:
$validation = ['price' => 'regex:[0-9]+('.[0-9][0-9]?)?'];
错误:
preg_match():分隔符不能是字母数字或反斜杠
第三次尝试:
$validation = ['price' => 'regex:'d+('.'d{2})?|'.'d{2}'];
错误:
preg_match():分隔符不能是字母数字或反斜杠
我从这个问题中得到了所有的正则表达式:精度为2的小数的简单正则表达式
我做错了什么?或者还有其他方法来验证Laravel
中具有两个小数的双精度数吗?
您需要使用正则表达式分隔符,最常见的是/.../
。此外,为了确保匹配整个字符串,您需要锚,^
锚定在开始,$
锚定在结束:
$validation = ['price' => 'regex:/^[0-9]+('.[0-9][0-9]?)?$/'];
试试下面的代码
'column' => 'required|regex:/^'d+('.'d{1,2})?$/',
只是为了改进Wiktor答案,这部分使用[0-9][0-9]?
来检查小数点后是否有一个或两个数字,其中[0-9]?
秒是可选的。因此,这可以通过下面的
'regex:/^[0-9]+('.[0-9]{1,2})?$/'
这里的{1,2}
告诉我们在小数点后需要多少位数字至少一个。因此,如果有人想要固定更多的数字,例如任何想要小数点后最多3位数字,只需将{1,2}
更改为{1,3}
。
同样验证负数
'regex:/^(-)?[0-9]+('.[0-9]{1,2})?$/'
这里添加(-)?
检查可选减号