!preg_match 返回无效的电子邮件地址错误

!preg_match returning invalid email address error

我使用了以下代码来确保注册时提供的电子邮件地址有效。

if (!preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)){
    $msg = $msg."Email Id Not Valid, Please Enter The Correct Email Id .<BR>";
    $status = "NOTOK";
}

我输入了标准电子邮件 myemail@gmail.com,但它标记为无效。

请帮我看看为什么它被标记了。

当有内置验证时,你不应该为此使用正则表达式:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $msg.="Email Id Not Valid, Please Enter The Correct Email Id ."; 
    $status= "NOTOK";
}

http://php.net/manual/en/filter.examples.validation.php

试试这个

if (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i", $email)) 
{  
   $emailErr = "Email Id Not Valid, Please Enter The Correct Email Id";
}

试试这个...

if(isset($_POST["email"]))
{
        $emaill = filter_var($_POST["email"], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);
  // $reg = '/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/';
    if(!preg_match("/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/",$emaill))
        {
            die('<i class="fa fa-times red"></i> Enter valid email!!!');

        }
        else{
             die('<i class="fa fa-check green"></i> Valid!!!');

        }
}