Вот поток о регулярных выражениях по телефону как выражения номеров:
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: К сожалению, я имел в виду, чтобы сделать это в качестве комментария, но у меня нет репутации еще.
Первое, что нужно сделать, это указать, какие форматы вы считаете действительными номерами телефонов. Постройте несколько тестовых примеров, показывающих разные числа, которые должны быть найдены, и некоторые из них не должны быть. – Keppil
Возможно, вы могли бы использовать это http://code.google.com/p/libphonenumber/ – Leo
Всегда есть знак '+' перед номерами телефонов? – user3437460