可能重复:
PHP 正则表达式 - 有效的浮点数
php 中的正则表达式以及浮点数的 javascript 中的正则表达式是什么?
我想匹配 3、3.3 或 0.3 和 0 之类的值
浮点数没有标记。如果要匹配浮点数,则必须使用数字 + 点 + 数字,如下所示:
\d+(\.\d+)?
PHP:
is_numeric($nb);
JS:
!isNaN(+nb);
如果要检查给定字符串是否为 int/float:
/^\d+(\.\d+){0,1}$/
如果要匹配给定字符串中的所有数字:
/\b\d+(\.\d+){0,1}\b/g
那应该给你你需要的
浮点数也可以写成.3
,在这种情况下,这等于0.3
覆盖您需要的所有内容:
/((?:\d)?(?:.\d+)?)/
这会将结果分组为一个完整的字符串,而不会将其拆分为子结果。
所以这将匹配33
, 3.3
&.33
这取决于你想要什么:只检查?正如 Florian Margaine 所说:is_numeric($nb)
在 PHP 中用于浮点数和ctype_digits($nb)
整数。在 JS!isNaN(+nb);
中用于浮点数和typeof($nb) == "Integer"
整数。
如果您想转换您的号码(并同时签入):
//for floats
$floatNb = (float) $nb;
if($floatNb != 0 || $nb === "0")//now you are sure that $nb was a float and $floatNb is the float representation
如果您有国际号码,请使用intl extension中的数字格式化程序:
<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo numfmt_parse($fmt, $num)."\n";
正则表达式永远不适合类型检查