9

我正在使用带有preg_match函数的 php 验证电子邮件地址。但我不断收到以下错误

preg_match(): No ending delimiter '^' found

这是我的 preg_match 模式

$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";

如何解决这个问题?

4

7 回答 7

26

只需使用:

$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i";
于 2012-11-19T04:19:00.850 回答
14

也许使用

filter_var($email, FILTER_VALIDATE_EMAIL);

将是一种更简单的方法。

于 2012-11-19T04:21:28.810 回答
8

使用此代码

<?php
 $email = "asd/sdff@asdf.com"; 
 $regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/'; 
 $email = (preg_match($regex, $email))?$email:"invalid email";
?>
于 2016-09-23T07:21:38.147 回答
1

由于 FILTER_VALIDATE_EMAIL 引起的问题(例如它不适用于非拉丁字符),我更喜欢使用:

preg_match("/^[^@]+@[^@]+\.[a-z]{2,6}$/i",$email_address);

于 2017-10-28T12:49:16.830 回答
0

只有当邮局主管希望允许对电子邮件地址进行 RFC 样式匹配时,在 PHP 中使用函数 filter_var() 才会更容易。对于某些应用程序或 MTA(sendmail 等),这可能是不可取的。但是,如果要走 preg_match() 路线,我建议调查非贪婪量词并捕获不使用缓冲区的语句。一个好的起点是http://us3.php.net/manual/en/book.pcre.php

于 2013-06-18T04:15:36.230 回答
0

这是一个使用正则表达式的简单电子邮件验证方法:

public function emailValidation($email) 
{
    $regex = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$/";
    $email = strtolower($email);

    return preg_match ($regex, $email);
}
于 2018-03-07T05:56:35.407 回答
-2
    var emailid = $.trim($('#emailid').val());  
  if( ! /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailid)){
                alert("<?php echo "email_invalid" ?>");

                return false;
            }

emailid 是输入标签的 id

于 2012-11-19T04:45:38.577 回答