/\D(\d{12})\D/
(в этом случае номер будет индексом захвата 1)
Редактировать: Упс, это не работает, если число является всей строкой. Вместо этого используйте приведенный ниже
Или с отрицательным прогнозом и прогнозом: /(?<!\d)\d{12}(?!\d)/
(где число будет индексом захвата 0)
if( preg_match("/(?<!\d)\d{12}(?!\d)/", $string, $matches) ) {
$number = $matches[0];
# ....
}
где $string
- текст, который вы тестируете