-1

可能重复:
PHP 正则表达式 - 有效的浮点数

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

我想匹配 3、3.3 或 0.3 和 0 之类的值

4

5 回答 5

3

浮点数没有标记。如果要匹配浮点数,则必须使用数字 + 点 + 数字,如下所示:

\d+(\.\d+)?
于 2012-11-02T09:36:37.730 回答
1

PHP:

is_numeric($nb);

JS:

!isNaN(+nb);
于 2012-11-02T09:39:19.313 回答
1

如果要检查给定字符串是否为 int/float:

/^\d+(\.\d+){0,1}$/

如果要匹配给定字符串中的所有数字:

/\b\d+(\.\d+){0,1}\b/g

那应该给你你需要的

于 2012-11-02T09:42:20.137 回答
0

浮点数也可以写成.3,在这种情况下,这等于0.3覆盖您需要的所有内容:

/((?:\d)?(?:.\d+)?)/

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

所以这将匹配33, 3.3&.33

于 2012-11-02T09:45:34.777 回答
0

这取决于你想要什么:只检查?正如 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";

正则表达式永远不适合类型检查

于 2012-11-02T09:47:01.440 回答