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