如何从包含整数的字符串中仅提取浮点数(小数)

Ali*_*ter 1 php regex

我找不到合适的正则表达式只从字符串中提取浮点数.请考虑以下字符串:

$string = "8x2.1 3x2";
Run Code Online (Sandbox Code Playgroud)

我想提取2.1,我尝试了以下但这给了我整数和浮点数:

preg_match_all('/[0-9,]+(?:\.[0-9]*)?/', $string, $matches);
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用 is_float检查浮点数但这也因某些原因返回整数.有任何想法吗?谢谢

ark*_*cha 6

考虑这个简单的例子:

<?php
$input = "8x2.1 3x2";
preg_match('/\d+\.\d+/', $input, $tokens);
print_r($tokens);
Run Code Online (Sandbox Code Playgroud)

匹配"一个或多个数字,然后恰好一个完整停止,再一个或多个数字".

输出显然是:

Array
(
    [0] => 2.1
)
Run Code Online (Sandbox Code Playgroud)