电子邮件的php正则表达式

时间:2018-07-14 00:13:16

标签: php regex input

尝试为邮件创建正则表达式,但不起作用

我要删除所有其他特殊字符或电子邮件中不允许的任何字符

所以0-9 a-z A-Z - _ @除外

所有其他字符都必须删除。

$pass = preg_replace ('#[^a-z0-9-_.@]+#i', '', $_GET['e']);

echo $pass ;

如果我尝试33.php?e=frefr_-+_)(*&^%$#!@edef.fr

我得到:" frefr_-_ "

我必须得到:frefr_-_@edef.fr

,然后从电子邮件中删除所有其他字符。 谢谢:)

2 个答案:

答案 0 :(得分:0)

我找到了:P

$email = preg_replace ('#[^a-z0-9-_@.]+#i', '', $_GET['e']);

链接中的“&”和“#”在测试中被认为是问题。

答案 1 :(得分:0)

这不能直接回答您要求“ regex”的问题,但是使用regex验证电子邮件非常复杂,并且随着Internet标准的更改可能需要维护。

有效电子邮件列表,因此需要复杂的正则表达式:
https://en.wikipedia.org/wiki/Email_address#Examples

相反,我建议您改用内置工具,该工具将与PHP一起进行更新以节省您的操作。

  

FILTER_SANITIZE_EMAIL
  除去字母,数字和!#$%&'* +-=?^ _`{|}〜@。[]以外的所有字符。

$filteredEmail = filter_var($fullEmail, FILTER_SANITIZE_EMAIL);
  

FILTER_VALIDATE_EMAIL
   验证该值是否为有效的电子邮件地址。

     

通常,这会根据RFC 822中的语法验证电子邮件地址,但不支持注释,空格折叠和无点域名。

$emailValid = filter_var($fullEmail, FILTER_VALIDATE_EMAIL);

这将返回有效的电子邮件,否则为布尔值false,您可以检查该电子邮件。

相关问题