Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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和JavaScript中的浮点正则表达式_Php_Javascript - Fatal编程技术网

PHP和JavaScript中的浮点正则表达式

PHP和JavaScript中的浮点正则表达式,php,javascript,Php,Javascript,可能重复: 什么是php中的正则表达式以及javascript中的浮点数 我需要匹配像3、3.3或0.3和0这样的值。浮点数没有标记。如果要匹配浮点,必须使用数字+点+数字,如下所示: \d+(\.\d+)? PHP: JS: 如果要检查给定字符串是否为int/float: /^\d+(\.\d+){0,1}$/ 如果要匹配给定字符串中的所有数字: /\b\d+(\.\d+){0,1}\b/g 这将为您提供所需的浮点值也可以写成.3,在这种情况下等于0.3,以满足您的所有需要: /((?

可能重复:

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


我需要匹配像3、3.3或0.3和0这样的值。浮点数没有标记。如果要匹配浮点,必须使用数字+点+数字,如下所示:

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

JS:


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

/^\d+(\.\d+){0,1}$/
如果要匹配给定字符串中的所有数字:

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

这将为您提供所需的

浮点值也可以写成.3,在这种情况下等于0.3,以满足您的所有需要:

/((?:\d)?(?:.\d+)?)/
这会将结果分组为一个完整的字符串,而不会将其拆分为子结果


因此,这将匹配33、3.3和.33,这取决于您想要什么: 只有支票吗?正如Florian Margaine所说:在PHP中,浮点数是数字$nb,整数是ctype_digits$nb。在JS中!isNaN+nb;对于float和typeof$nb==整数的整数

如果要转换号码并同时签入:

//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
如果您有国际号码,请使用from intl分机:

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo numfmt_parse($fmt, $num)."\n";

Regex永远不适合类型检查

1.2.3.4.5将匹配它。你把*量词和?@zerkms混淆了哦,对了。。我会编辑的,谢谢\d+\。\d+?匹配3、3.3、0.3&而不是1.2.3.4。5@KevinD. 因为我编辑了我的答案
//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
<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo numfmt_parse($fmt, $num)."\n";