我有此命令检查有效的电子邮件地址。我刚刚发现,当我尝试将此添加到我们的电子邮件服务器时(此表单中的所有电子邮件请求都是本地电子邮件地址),电子邮件服务器不允许使用数字字符来启动电子邮件地址/用户名。我已经阅读了命令preg_match的所有文档,如果它在第一个字符位置以数字开头,则无法找到如何使其失败。我是新手,所以任何帮助将不胜感激。
if (!preg_match("(^[-\w\.]+@([-a-z0-9]+\.)+[a-z]{2,4}$)i", $in_email))
答案 0 :(得分:0)
试试这个;
/^[^0-9][_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/
使用如下
$regex = '/^[^0-9][_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
if (preg_match($regex, $email)) {
// Valid email
} else {
// Invalid email
}
答案 1 :(得分:0)
在php中,您可以将以下代码与php filter_var函数一起使用,该函数在使用指定的过滤条件过滤变量后返回布尔值。
if(filter_var($email,FILTER_VALIDATE_EMAIL))
{
//valid email
}
else{
//INVALID EMAIL
}
如果电子邮件采用正确格式,则函数filter_var将返回true,否则为false。
答案 2 :(得分:0)
如果我们的域没有点,则此答案不起作用。对于这种情况,我从:
/^[^0-9][_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/
致:
/^[^0-9][_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9-]{2,})+(\.[a-z0-9-]{2,})*$/
更新: 用户@Toto 正确地看到了正则表达式的一个问题,它可以以任何字符开头而不是数字开头。例如:@-----.--.---.----@--
已验证。所以我将 /^[^0-9]
更改为 /^[a-z]
,现在是正确的:
/^[a-z][_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9-]{2,})+(\.[a-z0-9-]{2,})*$/
适用于这些用例: