使用preg_match在PHP中验证电子邮件地址时遇到问题

Ada*_*dam 0 php email validation preg-match

这是代码:

if(trim($_POST['email']) == '')  {
        $hasError = true;
    } else if (!preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
        $hasError = true;
    } else {
        $email = trim($_POST['email']);
    }
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

警告:preg_match()[function.preg-match]:在第22行的/home/bigsilkd/public_html/UBA/join.php中找不到结束分隔符'/'

Jon*_*Jon 5

这正是它所说的:

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$"
Run Code Online (Sandbox Code Playgroud)

应该

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/"
                                                      ^
                                                      |
                                  This was missing ---/
Run Code Online (Sandbox Code Playgroud)


Nik*_*kiC 5

您不应使用正则表达式来验证电子邮件.例如,你的正则表达式不允许我的电子邮件地址+@example.org,这是一个正常和有效的电子邮件.保存我的邮箱!由于形式验证不好,它正在消失!用filter_var!

if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    // email is valid
}
Run Code Online (Sandbox Code Playgroud)