在PHP中检测部分电子邮件模式

时间:2014-10-02 10:23:51

标签: php regex

我正在撰写电子邮件简报的取消订阅选项。

我必须检测以下格式的电子邮件:

<0 or more alphanumeric letter/digit only>, then one <@> character, then <1 or more alphanumeric letter/digit>, then a <.> character, then <at least 2 alphanumeric letter/digits>

我在@字符之前需要“零”或更多字母数字字符,而不是“一”或更多,因为有时我想取消订阅整个域名,所以在这种情况下匹配的模式是@example.com,我也是想要检测完整的电子邮件,它以字母数字字符开头。

请帮我写下要检测的代码。

我将来自网址的电子邮件作为$_GET['email']

例如url将是;

http://www.example.com/php/unsubscribe.php?email=@example.com
http://www.example.com/php/unsubscribe.php?email=@example.co
http://www.example.com/php/unsubscribe.php?email=abc@example.co

2 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式。

[A-Za-z0-9]*@[A-Za-z0-9]+\.[A-Za-z0-9]{2,}

DEMO

[A-Za-z0-9]{2,}匹配两个或更多字母数字字符。您可以在{} paranthesis中指定字符范围。

答案 1 :(得分:0)

然后,正则表达式只是读取

/@.+\.[^\.]{2,}$/

编辑:我使用.*[^\.],即使OP要求“字母数字/数字” - 但是,有效的电子邮件地址包括破折号,下划线等等...完全匹配所有有效的电子邮件地址都非常复杂! (见:http://www.regular-expressions.info/email.html