2014-07-23 3 views
-3

У меня есть строка, содержащая текст и номер телефона. Как я могу извлечь этот номер?Как извлечь номер телефона из строки?

Пример текста: Lorem ipsum +44 12-45-243 dolor 00(49) 812 234 234

РЕДАКТИРОВАТЬ: Номер телефона может быть любого заданного формата.

+2

Первое, что нужно сделать, это указать, какие форматы вы считаете действительными номерами телефонов. Постройте несколько тестовых примеров, показывающих разные числа, которые должны быть найдены, и некоторые из них не должны быть. – Keppil

+1

Возможно, вы могли бы использовать это http://code.google.com/p/libphonenumber/ – Leo

+1

Всегда есть знак '+' перед номерами телефонов? – user3437460

ответ

2

Вот поток о регулярных выражениях по телефону как выражения номеров:

A comprehensive regex for phone number validation

Я считаю, что это будет полезно для вашей задачи.

Вот один из самых upvoted регулярное выражение для 7 до 10 цифр:

^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$ 

Edit: К сожалению, я имел в виду, чтобы сделать это в качестве комментария, но у меня нет репутации еще.

+1

Вы должны вычесть соответствующие части из связанного ответа в качестве ссылки, на которые ссылаются только ответы. –

+0

Спасибо за головы. Не имел представления. Экстракт будет огромным, но я увижу, могу ли я получить самые важные пьесы. – Marcelo

+0

Как это сделать, чтобы он мог извлечь номер из строки в любом месте, где может быть номер телефона? – Kousha

1

Прежде всего, вы можете удалить все пробелы, тире и ... затем просто прочитайте строку и сохраните прикрепленные числа в массиве, а затем проверьте, действительно ли номер действителен с любым вашим алгоритмом проверки. Это будет работать, но это не эффективно.

+1

Скорее всего, так как ОП не смог определить, что ему нужно. Напоминает мне знаменитую цитату «Если кто-то не знает, к какому порту идет плавание, ветер не поддается» - Lucius Annaeus Seneca – user3437460

+0

@ user3437460 Я хотел бы найти номера телефонов для всех стран/регионов мира, которые могут появиться в текстовый поток. – pixel

+0

@pixel вы можете найти коды стран http://countrycode.org/.И вы можете проверить числа, которые вы получаете, чтобы они соответствовали любому из этих кодов или нет, а также вы могли проверить длину номера, но я не думаю, что есть алгоритм проверки кода страны, потому что в каждой стране он меняет код во времени, так что это все у вас есть, хотя у вас есть такая проверка, как вызов. – Lrrr

0

Хорошо, я нашел решение.

Я могу использовать libphonenumber и findNumbers функция.

+0

Вы знаете, как использовать его? Я борюсь, не могу понять – anshaj

+0

@anshaj, какова ваша проблема конкретно? – pixel

+0

У меня есть текстовый файл ввода, откуда мне нужно извлечь все возможные телефонные номера. Номера телефонов могут быть любого типа или формата. – anshaj

Смежные вопросы