检查字符串是否以数字结尾,如果为真,则获取数字

时间:2016-03-22 12:05:36

标签: php preg-match

如何检查字符串是否以数字结尾,如果为true,则将数字推送到数组(例如)?我知道如何检查字符串是否以数字结尾,我解决了这个问题:

$mystring = "t123";

$ret = preg_match("/t[0-9+]/", $mystring);
if ($ret == true)
{
    echo "preg_match <br>";
    //Now get the number
}
else
{
    echo "no match <br>";
}

我们假设所有字符串都以字母t开头,并且与一个数字合成,例如t1t224t353253 ...

但是,如果有这个号码怎么能减少呢?在我的代码示例中,字符串末尾有123,如何将其剪切掉,例如将其推送到array_push的数组?

4 个答案:

答案 0 :(得分:2)

首先,你的正则表达式有点不对(可能是一个错字) - 但要回答你的问题,你可以使用lookbehind和match数组,如下所示:

velocity = velocity + acceleration * dt

答案 1 :(得分:2)

$number = preg_replace("/^t(\d+)$/", "$1", $mystring);
if (is_numeric($number)) {
    //push
}

这应该给你尾随的数字。只需检查它是否为数字,将其推送到数组

示例:https://3v4l.org/lYk99

修改

只是意识到这不适用于像t123t225这样的字符串。如果您需要支持此案例,请改用此模式:/^t.*?(\d+)$/。这意味着它会尝试使用数字捕获任何结尾,忽略t和数字之间的所有内容,并且必须以t开头。

示例:https://3v4l.org/tJgYu

答案 2 :(得分:1)

您应该使用preg_match中的第3个参数来获取匹配项,并且应该有数字并更改您的正则表达式:([0-9]+)

所以代码应如下所示:

$mystring = "t123";

$ret = preg_match("/([0-9]+)/", $mystring, $matches);
if ($ret == true)
{
    print_r($matches); //here you will have an array of matches. get last one if you want last number from array.
    echo "prag_match <br>";
}
else
{
    echo "no match <br>";
}

答案 3 :(得分:1)

preg_match函数中再添加一个参数,我想建议其他一些正则表达式来获取任何字符串的最后一个数字。

$array = array();
$mystring = "t123";

$ret = preg_match("#(\d+)$#", $mystring, $matches);


array_push($array, $matches[0]);

$mystring = "t58658";

$ret = preg_match("#(\d+)$#", $mystring, $matches);

array_push($array, $matches[0]);

$mystring = "this is test string 85";

$ret = preg_match("#(\d+)$#", $mystring, $matches);

array_push($array, $matches[0]);

print_r($array);

<强>输出

Array
(
    [0] => 123
    [1] => 58658
    [2] => 85
)