我有一大堆PHP代码可以解析包含大量电子邮件地址的大字符串中的电子邮件地址:
$pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $emailBatch, $matches);
除了包含@
之前的句点的任何电子邮件地址被截断外,这种方式完美无缺。
示例:jim.dandy@foo.com
变为dandy@foo.com
如何在地址中修改正则表达式以允许/接受句点(以及电子邮件地址的任何其他合法字符)?
答案 0 :(得分:2)
在第一组模式中,您需要添加一个点:
$pattern = '/[a-z0-9_\-\+\.]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $emailBatch, $matches);
因为它没有在第一组中指定,所以它只捕获第二部分(就在@
符号之前)。