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