Написать регулярное выражение

Максим12 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
11.08.2013

Зафигачить regexp для определения в произвольном тексте номеров сотовых телефонов российских операторов. На выходе не просто получить true или false, а результат который можно записать шаблоном +7-$1-$2-$3-$4. (т.е., например - +7-909-435-90-43) Использоваться будет следующим образом. Пользователь пишет объявление и по ходу пьесы в теле объявления, а не отдельным полем, оставляет свой телефон. Задача - дать ему возможность писать телефон так, как он привык, а регэкспом, тем не менее, привести телефон к шаблонному виду в последующей выдаче.

Немного возможных вариантов записи телефонного номера:

8925-908-45-45

+7-925908-4509

79259084509

925 908 45 09

8 925 9084509

9259084509

7(925)9084509

(925)9084509

8-(925)-9084509

Приятные бонусы - номера российских мобильных операторов всегда начинаются с цифры 9 (903, 925 и т.д.), а цифр в номере мобильного всегда 10 за исключеним код России +7).

Иногда пользователи оставляют в теле объявления номера асек ( а это максимум 9 цифр)

Иногда пользователи пишут свои антропометрические параметры, например: 27 190 45 15

В целом, необходимо охватить максимум случаев, когда регулярное выражение будет отрабатывать корректно, ошибаться оно почти не должно.

Ну, почти, да.

P.S. Использоваться регэксп будет функцией preg_replace в php.

Заявки фрилансеров