我正试图从通过联系表单提交给我的消息中提取电话号码。这个"联系表单"每天收到超过一千份提交,其中许多提交者都犯了格式错误,例如:
"Please call me back at925-943-2343 ext. 304"(号码前无空格)
目前,我的regex(如下)由于某些格式错误(例如数字前缺少空间)而丢失了这些数字
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;
}
为什么不返回任何结果?
试试这个:
[01]?[- .]?'(?[2-9]'d{2}')?[- .]?'d{3}[- .]?'d{4}(?:i.{0,3}x?.{0,9})('d{1,5})