尝试为邮件创建正则表达式,但不起作用
我要删除所有其他特殊字符或电子邮件中不允许的任何字符
所以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
,然后从电子邮件中删除所有其他字符。 谢谢:)
答案 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
,您可以检查该电子邮件。