Php 检查字符串是否包含数字,同时允许多个小数点?

Php 检查字符串是否包含数字,同时允许多个小数点?,php,Php,这是为了测试版本号。它们只需要包含数字,但可以有多个小数点 例如: $a = '1.2.3'; is_numeric($a)返回false,floatval($a)去掉额外的小数部分,而不返回测试的有用答案 有任何PHP函数可以这样做吗?您可以使用preg\u match(): 正则表达式模式从字符串的开始^匹配到结束$,并检查它是否以数字开始,然后仅包含数字(可选地以单点分隔),并再次以数字结束。您可以使用该函数: $q='1.2.3'; if (strcspn($q, '01234567

这是为了测试版本号。它们只需要包含数字,但可以有多个小数点

例如:

$a = '1.2.3';
is_numeric($a)返回false,floatval($a)去掉额外的小数部分,而不返回测试的有用答案


有任何PHP函数可以这样做吗?

您可以使用
preg\u match()

正则表达式模式从字符串的开始^匹配到结束$,并检查它是否以数字开始,然后仅包含数字(可选地以单点分隔),并再次以数字结束。

您可以使用该函数:

$q='1.2.3';

if (strcspn($q, '0123456789') != strlen($q))
  echo "true";
else
  echo "false";

或者,为什么不把它们作为字符串进行比较呢?@Mattt:我没有具体的值来比较。我只需要知道一个字符串是否只包含一个数字,同时允许多个小数点。如果这是为了后续版本的比较,为什么不使用@MarkBaker:我不需要比较两个值,只需测试其中一个值以满足上述约束。虽然函数很有趣,但它可能会很有用。谢谢你的指点。当我开始头脑风暴()和循环来处理这个问题时,我甚至没有考虑需要检查后期或多个后续的时间,这会把我搞得一团糟。这太完美了,谢谢:)@Equazzion不客气。:)是的,在很多情况下,
explode()
或其他一些非正则函数比preg_*函数更受欢迎,我们鼓励您在每次搜索完美解决方案时都考虑这一点。在给出
preg\uz
答案之前,我也考虑过这个问题。但在这种情况下,正则表达式是完美的!(海事组织)
$q='1.2.3';

if (strcspn($q, '0123456789') != strlen($q))
  echo "true";
else
  echo "false";