以下代码成功地将字符串“0123.250”验证为有效浮点数,但实际上它不是。这是一个 PHP 错误还是我做错了什么?
filter_var('0123.250', FILTER_VALIDATE_FLOAT);
以下代码成功地将字符串“0123.250”验证为有效浮点数,但实际上它不是。这是一个 PHP 错误还是我做错了什么?
filter_var('0123.250', FILTER_VALIDATE_FLOAT);
LNUM [0-9]+
DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})
如您所见,前导零没有限制,如以下位所示:[0-9]*[\.]
和[0-9]+
.
由于该页面从未提及八进制,因此我们需要假设前导零对解释没有影响。
我假设应用了完全相同的规则FILTER_VALIDATE_FLOAT
。
前导 0 只是明确表明千位值为零的事实,这通常是由于该位值没有数字而暗示的。
如果您担心前导零是一个非有效数字这一事实,我认为 PHP 并没有严格遵循该定义。