带有负号的十进制数字验证

时间:2018-07-03 08:03:58

标签: php

我需要使用php支持带负号的十进制数字验证。

我已经用过preg_match('/^\d+\.\d+$/', latitude)

它工作正常,但是当纬度为-92.67时,它不起作用。

4 个答案:

答案 0 :(得分:1)

尝试改用此表达式:

^-?\d+.\d+$

所以您的代码如下:

preg_match('/^-?\d+.\d+$/', latitude)

-?只是说'-'是可选的

答案 1 :(得分:0)

\d仅匹配数字,因此您只需要允许这样的可选-即可:

preg_match('/^-?\d+.\d+$/', latitude)

?意味着前面的char必须出现0或1次(请参阅doc:http://php.net/manual/regexp.reference.repetition.php

答案 2 :(得分:0)

也许您可以使用floatval()is_numeric()

“ floatval-获取变量的浮点值”

http://php.net/manual/en/function.floatval.php

“ is_numeric —查找变量是数字还是数字字符串”

http://php.net/manual/en/function.is-numeric.php

答案 3 :(得分:0)

除了添加可选的连字符-?之外,您还必须转义点\.,否则它将与例如-9z90-9 90匹配,因为该点匹配任何字符。 / p>

您的正则表达式可能如下:

^-?\d+\.\d+$