PHP正则表达式删除句点

时间:2018-02-15 16:31:12

标签: php regex

我有一大堆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

如何在地址中修改正则表达式以允许/接受句点(以及电子邮件地址的任何其他合法字符)?

1 个答案:

答案 0 :(得分:2)

在第一组模式中,您需要添加一个点:

$pattern = '/[a-z0-9_\-\+\.]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $emailBatch, $matches);

因为它没有在第一组中指定,所以它只捕获第二部分(就在@符号之前)。