答案 0 :(得分:3)
浮点数没有令牌。如果你想匹配一个浮点数,你必须使用数字+点+数字,如下所示:
\d+(\.\d+)?
答案 1 :(得分:1)
PHP:
is_numeric($nb);
JS:
!isNaN(+nb);
答案 2 :(得分:1)
如果要检查给定字符串是否为int / float:
/^\d+(\.\d+){0,1}$/
如果您想匹配给定字符串中的所有数字:
/\b\d+(\.\d+){0,1}\b/g
这应该可以满足您的需求
答案 3 :(得分:0)
Float也可以写成.3
,在这种情况下等于0.3
以涵盖你所需要的所有内容:
/((?:\d)?(?:.\d+)?)/
这会将结果分组为一个完整的字符串,而不会将其分成子结果。
这样就可以匹配33
,3.3
& .33
答案 4 :(得分:0)
这取决于你想要的东西:
只检查?像Florian Margaine所说:PHP中的is_numeric($nb)
表示浮点数,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
如果您有国际号码,请使用国际/地区扩展名中的number formatter:
<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo numfmt_parse($fmt, $num)."\n";
正则表达式绝对不适合进行类型检查