Я буду использовать \d
вместо [0-9]
.
Если ваша строка не должна содержать ничего, кроме числа из восьми цифр
Использовать ^
и $
для сопоставления начала и конца строки соответственно:
preg_match_all('/^(\d{8})$/', $string, $match)
Если в пределах строки большего размера вы сопоставляете число, которое должно содержать максимум восемь цифр
Быстрый, но слегка грубоватый подход:
Используйте \D
([^0-9]
), чтобы сопоставить "не число":
preg_match_all('/^|\D(\d{8})\D|$/', $string, $match)
Взгляд/ lookaheads может сделать это лучше:
preg_match_all('/(?<!\d)(\d{8})(?!\d)/', $string, $match)