Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php预匹配与电子邮件验证问题_Php - Fatal编程技术网

php预匹配与电子邮件验证问题

php预匹配与电子邮件验证问题,php,Php,我正在使用带有preg\u match函数的php验证电子邮件地址。但我一直有以下错误 preg_match(): No ending delimiter '^' found 这是我的赛前模式 $pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"; 如何解决此问题?只需使用: $pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(

我正在使用带有
preg\u match
函数的php验证电子邮件地址。但我一直有以下错误

preg_match(): No ending delimiter '^' found
这是我的赛前模式

$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
如何解决此问题?

只需使用:

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

filter_var($email, FILTER_VALIDATE_EMAIL);
这将是一个更简单的方法。

var-emailid=$.trim($('#emailid').val());
    var emailid = $.trim($('#emailid').val());  
  if( ! /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailid)){
                alert("<?php echo "email_invalid" ?>");

                return false;
            }
如果(!/^\w+([\.-]?\w+*@\w+([\.-]?\w+*(\.\w{2,3})+$/.test(emailid)){ 警报(“”); 返回false; }

emailid是输入标记的id,只有当邮局主管希望允许电子邮件地址使用RFC样式匹配时,在PHP中使用函数filter_var()才更容易。对于某些应用程序或MTA(sendmail等),这可能是不可取的。但是,如果要采用preg_match()方法,我建议调查非贪婪量词并捕获不使用缓冲区的语句。一个好的起点是。

使用此代码

<?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";
?>

由于筛选\u验证\u电子邮件引起的问题(例如,它不能很好地与非拉丁字符配合使用),我更喜欢使用:


preg\u match(“/^[^@]+@[^@]+\.[a-z]{2,6}$/i”,$email\u地址)

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

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);
}

相关:这不是完全有效的,因为您可以向Martin发送电子邮件。Kudlacek@example.com你的模式会说这个地址无效。我碰巧与MS Exchange一起创建了这样的电子邮件地址。@mkudlacek在应用该模式之前,您希望将电子邮件小写。这不是对原始问题的回答。问题是如何使用preg_match()进行验证。正确的模式应该是:/^[[U a-zA-Z0-9-]+(\.[U a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,})$/或者扩展为/i以进行不区分大小写的匹配。@mkudlacek很公平。我已在末尾添加了
I
。请小心在电子邮件中使用过滤器变量!例如,此类工作电子邮件:ППцццццццц。Пф或用户@例子.广告 将被视为不正确。您将需要idn_to_ascii()函数。