PHP和JavaScript中float的正则表达式

时间:2012-11-02 09:35:31

标签: php javascript

  

可能重复:
  PHP regex - valid float number

php中的正则表达式以及浮点数的javascript是什么?

我想匹配3,3.3或0.3和0

之类的值

5 个答案:

答案 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+)?)/

这会将结果分组为一个完整的字符串,而不会将其分成子结果。

这样就可以匹配333.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";

正则表达式绝对不适合进行类型检查