如何匹配这些数字?

时间:2013-02-04 13:57:40

标签: php regex

我有一组数字,例如:

10001234
10002345

现在我有一个数字,应与数组中的所有数字匹配。数字可以是10001234(这很容易匹配),但也可以是100001234(4个零而不是3个)或101234个(一个零而不是3个)。任何组合都是可能的。唯一固定的部分是最后的1234.

我无法获得最后4个字符,因为它也可以是3或5或6 ......,如1000123456。

什么是匹配的好方法?也许它很容易,我也看不到树木:D。

谢谢!

3 个答案:

答案 0 :(得分:2)

如果始终第一个数字是一个,您可以使用此

$Num=1000436346;
echo(int)ltrim($Num."","1");

输出:

436346

答案 1 :(得分:0)

$number % 10000

将返回余数除以10000的数字。含义,后四位数。

答案 2 :(得分:0)

这个问题并没有使比赛的标准非常明确。但是,我会试一试。

首先,我的假设:

  • 该号码始终以1开头,后跟未知数量的0 s。

  • 之后,我们有一个数字序列,可以是任何东西(但可能不是从零开始?),你想从字符串中提取?

鉴于上述情况,我们可以相当容易地表达一个表达式:

$input='10002345';
if(preg_match('/10+(\d+)/',$input,$matches)) {
     $output = $matches[1];
}

$output现在包含数字的第二部分 - 即2345

如果您需要匹配的不只是前导1,则可以将表达式替换为\d以匹配任何数字。并在其后添加加号以允许多个数字(尽管我们仍然依赖于数字的第一部分和第二部分之间至少有一个零)。

$input='10002345';
if(preg_match('/\d+0+(\d+)/',$input,$matches)) {
     $output = $matches[1];
}