为什么此Regex模式与preg_match_all中间的数字不匹配?

时间:2019-12-12 12:06:09

标签: php regex preg-match-all

这是我的代码:

<?php
    $search = '12345 1234567 123456';
    $res = preg_match_all(
        '/(?:^|[\s,;|])(\d{5,7})(?:[\s,;|]|$)/i',
        $search,
        $matches
    );

    var_dump($res, $matches[1] ?? []);

这是结果:

int(2)
array(2) {
  [0]=>
  string(5) "12345"
  [1]=>
  string(6) "123456"
}

但预期结果将是:

int(2)
array(2) {
  [0]=>
  string(5) "12345"
  [1]=>
  string(7) "1234567"
  [2]=>
  string(6) "123456"
}

为什么中间的数字不匹配,我该如何解决?

在此处进行测试:https://3v4l.org/vflve

这个想法是: 匹配所有开头或结尾或被空格或定界符[,; |]

包围的数字

0 个答案:

没有答案