0

我有这个命令来检查有效的电子邮件地址。我刚刚发现,当我尝试将其添加到我们的电子邮件服务器时(此表单中的所有电子邮件请求都是本地电子邮件地址),电子邮件服务器不允许以数字字符开头的电子邮件地址/用户名。我已阅读命令 preg_match 的所有文档,如果它在第一个字符位置以数字开头,则找不到如何使其失败。我是新手,所以任何帮助将不胜感激。

if (!preg_match("(^[-\w\.]+@([-a-z0-9]+\.)+[a-z]{2,4}$)i", $in_email))
4

3 回答 3

2

在 php 中,您可以将以下代码与 php filter_var 函数一起使用,该函数在使用指定的过滤条件过滤变量后返回一个布尔值。

 if(filter_var($email,FILTER_VALIDATE_EMAIL))
        { 
        //valid email
        }
        else{
        //INVALID EMAIL
        }

如果电子邮件格式正确,函数 filter_var 将返回 true,否则返回 false。

于 2020-10-29T10:50:49.633 回答
1

试试这个;

/^[^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
}
于 2012-11-15T19:15:29.467 回答
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,})*$/

并为这些用例工作:

  • 用户@域
  • aa@aa
  • aa@aa.aa
  • aa.aa@aa
于 2021-04-02T19:43:09.777 回答