Nik*_*ike 0 php regex preg-match
尝试使用preg_match验证电子邮件地址时遇到了一些问题(如果更合适,则使用eregi()).我现在尝试了几种正则表达式模式,无论我做什么它似乎都不起作用.
这是功能:
function validateEmail($email) {
if(eregi('[a-z||0-9]@[a-z||0-9].[a-z]', $email)){
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法有什么不对吗?我已经尝试在eregi(以及之前使用过的preg_match)之前添加一个感叹号,并将所有内容(正如预期的那样)反转,但仍然没有使它按预期工作.如果它没有通过正则表达式,我希望它返回TRUE.
而且我在preg_match函数上没有使用相同的正则表达式,我发现了另一个,因为我知道你不能真正混合这两个.对?
提前致谢!
您应该通过以下方式使用过滤器扩展filter_var:
filter_var($email, FILTER_VALIDATE_EMAIL);
Run Code Online (Sandbox Code Playgroud)
如果您想要正则表达式,请不要使用严格的规则,否则我的+@example.org域名将被拒绝.使用类似的东西~[^@]+@(?:[^.]+\.)+[A-Za-z]{2,6}~.虽然这仍然不允许有效的电子邮件,如"\@"@example.org.
PS:如果你想知道为什么你的正则表达式不起作用:
[]不写||.简单地使用[a-z0-9].||只会另外允许|角色+到处都忘记了量词.知道每个部分可能只有一个字符.修复了所有这些问题(但请不要使用此正则表达式!):
preg_match('~[a-z0-9]+@[a-z0-9]+.[a-z]+~i', $email);
Run Code Online (Sandbox Code Playgroud)