Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带负号的十进制数字验证_Php - Fatal编程技术网

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

Php 带负号的十进制数字验证,php,Php,我需要使用php支持带负号的十进制数字验证 我已经使用了preg\u match('/^\d+\.\d+$/',纬度) 它工作正常,但当纬度为-92.67时,它不工作。尝试使用以下表达式: ^-?\d+\.\d+$ 因此,您的代码如下所示: preg_match('/^-?\d+\.\d+$/', latitude) -?简单地说-是可选的\d只匹配数字,因此您只需允许如下选项: preg_匹配('/^-?\d+。\d+$/',纬度) ?表示前面的字符必须出现0或1次(请参阅文档:)也许您可

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

我已经使用了
preg\u match('/^\d+\.\d+$/',纬度)


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

尝试使用以下表达式:

^-?\d+\.\d+$
因此,您的代码如下所示:

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

-?
简单地说
-
是可选的

\d
只匹配数字,因此您只需允许如下选项:

preg_匹配('/^-?\d+。\d+$/',纬度)


表示前面的字符必须出现0或1次(请参阅文档:)

也许您可以使用
floatval()
是数字的()

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

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


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

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

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

您可以运行
var_dump(floatval('2或3个位置')、floatval('pink')
来解释为什么这不是一个好的验证方法。如果我们也使用is_numeric()函数呢?这使我的答案有用吗?还是我应该删除它?这取决于具体的规格。如果可以接受
+0123.45e6
,则
为数值()
可能可以。