在preg_match_all()中需要一些正则表达式的帮助

时间:2017-05-04 13:15:00

标签: php regex preg-match-all

因此我需要从字符串中提取票号“Ticket#999999”..如何使用正则表达式执行此操作。

如果我在Ticket#9999中有多个号码,那么我当前的正则表达式正在运行..但是如果我只有9号票据,它就不起作用请帮助。

当前的正则表达式。

 preg_match_all('/(Ticket#[0-9])\w\d+/i',$data,$matches);
谢谢。

1 个答案:

答案 0 :(得分:3)

在您的模式中[0-9]匹配1位数,\w匹配另一位数,\d+匹配1位数,因此#后需要3位数。

使用

preg_match_all('/Ticket#([0-9]+)/i',$data,$matches);

这将匹配:

  • Ticket# - 文字字符串Ticket#
  • ([0-9]+) - 第1组捕获1个或多个数字。

PHP demo

$data = "Ticket#999999  ticket#9";
preg_match_all('/Ticket#([0-9]+)/i',$data,$matches, PREG_SET_ORDER);
print_r($matches);

输出:

Array
(
    [0] => Array
        (
            [0] => Ticket#999999
            [1] => 999999
        )

    [1] => Array
        (
            [0] => ticket#9
            [1] => 9
        )

)