PHP正则表达式删除段之前和之后的段

问题描述 投票:0回答:1

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

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

php regex
1个回答
2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.