Промышленный номер телефона Regex (проблема Regex)
Я пытаюсь извлечь номера телефонов из сообщений, отправленных мне через контактную форму. Эта "контактная форма" получает более тысячи заявок в день, и многие из этих отправителей делают ошибки форматирования, такие как:
"Пожалуйста, перезвоните мне по телефону 925-943-2343 доб. 304" (без номера перед номером)
В настоящее время мое регулярное выражение, которое находится ниже, пропускает эти числа с определенными ошибками форматирования (такими как нехватка места перед числом)
foreach (...)
{
$regex = '/^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})'
.'(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})'
.'[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$/';
if (preg_match($regex, $msg))
{
$phonenumber = preg_replace($regex, '($1) $2-$3 ext. $4', $msg);
echo $phonenumber;
}
}
Какие-нибудь советы?
Связанная проблема:
$regex = '/^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})'
.'(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})'
.'[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$/';
$line = "(732) 912 0159 ";
if (preg_match($regex, $line))
{
$phonenumber = preg_replace($regex, '($1) $2-$3 ext. $4', $line);
echo $phonenumber;
}
Почему это ничего не возвращает?
1 ответ
Попробуй это:
[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}(?:i.{0,3}x?.{0,9})(\d{1,5})