Прежде всего, обратите внимание, что простого способа сделать это правильно с регулярными выражениями не существует, потому что не существует единого общепринятого соглашения о формате для телефонных номеров .
Например, все перечисленные ниже номера телефонов правильно отформатированы:
+1-555-2345
+358(0)1234567
02 500 500
+31 44 55 66 77
123-456-7890
+82 (0) 77 233 ext. 3456
(09) 223 44 ext 123
Я уверен, что есть еще много форматов, которые являются местным соглашением.
Если после телефонного номера в текстовой строке ничего нет, я бы выбрал .*[^0-9-( )] ([0-9-( )]+)$
, что соответствует концу строки.
В противном случае, я бы искал все вхождения ([0-9-( )]+)
и , надеюсь , что есть только одно совпадение на запись (я полагаю, у вас есть какие-то границы входа в ваших данных ) это достаточно долго (9+ символов), чтобы быть номером телефона и выбрать его.
Ни один из этих подходов не принимает числа с ext
.