电子邮件正则表达式在某些电子邮件地址上失败

时间:2013-03-25 17:55:29

标签: php regex email

我正在使用此代码来解析字符串中的电子邮件:

function get_emails ($str) {
    $pattern = '/([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])' .
    '(([a-z0-9-])*([a-z0-9]))+' . '(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)/i';

    preg_match ($pattern, $str, $matches);

    return $matches;
}

除非地址在域中有多个句点,否则它很有效。所以johndoe@yahoo.com工作正常,但johndoe@yahoo.co.uk在johndoe@yahoo.co获得了

我可以改变什么来解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在结尾前添加+,即+/i