$ph_fields = "8 067 123 43 22 223 2341 2232341 0674859532 +3 8067 34322 21 033 211 80 33 453 22 11";
$ph_fields =~ s/\D//g;
my @mob_phone = $ph_fields =~ /(80\d{9})|(0\d{9})|(380\d{9})/g;
$ph_fields =~ s/(80\d{9})|(0\d{9})|(380\d{9})//g;
$ph_fields =~ s/(?<=\d)(?=(\d{7})+$)/,/g;
@no_mob_phone = split (',',$ph_fields);
интересная задачка по регуляркам: разбор строки с телефонами
есть текстовое поле, в котором пользователем заведены номера телефонов. заведены они в ОЧЕНЬ произвольном виде, например:
Цитата:
8 067 123 43 22 2232341 2232341 0674859532 +3 8067 34322 21 033 211 80 33 453 22 11
формат номера - украинский - +380-хх-yyy-yy-yy
задача - вырезать из текста наибольшее количество номеров, учитывая, что номер может быть не только в полном формате, а и в урезаном и вообще без префикса - в семизначном виде.
привожу свое решение. на оптимальность не претендует, но вырезает с достаточной степенью точности. отдельные номера в тестовой строке я попеременно выделял, чтобы было понятнее.
Код:
кто предложит более элегантное решение?
Имхо, элегантнее, чем с утверждениями это просто реализовать нельзя.