检查字符串是否以PHP中的数字结尾

Kir*_*met 8 php string numbers

我正在尝试实现下面的功能.这里使用某种类型的正则表达式最好吗?我也需要捕获这个数字.

function endsWithNumber($string) {
  $endsWithNumber = false;

  // Logic

  return $endsWithNumber;
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*ore 23

return is_numeric(substr($string, -1, 1));

这只检查字符串中的最后一个字符是否为数字,如果要捕获并返回多位数,则可能必须使用正则表达式.

一个合适的正则表达式将是/[0-9]+$/一个数字字符串,如果它在一行的末尾.

  • 对于第一个字符,您可以将其切换为 return `is_numeric(substr($string, 0, 1));` (3认同)

Kin*_*xit 7

$test="abc123";
//$test="abc123n";
$r = preg_match_all("/.*?(\d+)$/", $test, $matches);
//echo $r;
//print_r($matches);
if($r>0) {
    echo $matches[count($matches)-1][0];
}
Run Code Online (Sandbox Code Playgroud)

正则表达式解释如下:

.*? - 这将从开始时占用字符串中的所有字符,直到找到后续部分的匹配.

(\ d +)$ - 这是一个或多个数字,直到字符串结尾,分组.

没有?在第一部分中,只有最后一个数字将在第二部分匹配,因为它之前的所有数字都将由.*占用.