Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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中使用preg_match()验证带有正则表达式的电子邮件时出现问题_Php_Regex - Fatal编程技术网

在PHP中使用preg_match()验证带有正则表达式的电子邮件时出现问题

在PHP中使用preg_match()验证带有正则表达式的电子邮件时出现问题,php,regex,Php,Regex,我无法在PHP中使用preg_match()来验证电子邮件地址。我已经用这个工具测试了我在互联网上找到的正则表达式,它与我在PHP应用程序上使用的输入一样可以正常工作 正则表达式: ^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$ Regexer: 我在PHP中这样应用它: $email = "local@test.com"; $pattern = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+

我无法在PHP中使用
preg_match()
来验证电子邮件地址。我已经用这个工具测试了我在互联网上找到的正则表达式,它与我在PHP应用程序上使用的输入一样可以正常工作

正则表达式:

^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$
Regexer:

我在PHP中这样应用它:

$email   = "local@test.com";
$pattern = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix";

if (false == preg_match($pattern, $email))
    echo "false";
当然,这封邮件和其他我测试过的邮件都是假的。我认为表达式的格式很好,因为我可以在regexer上测试它,并且它可以工作。我申请错了什么


提前谢谢你

我不确定您的代码中有什么错误,但这里有一个功能齐全的php函数,用于检查电子邮件地址:

function is_validemail($email) 
{
     return preg_match('/^[\w.-]+@([\w.-]+\.)+[a-z]{2,6}$/is', $email);
}

$email = "local@root.ws";

if(is_validemail($email)) { echo ("email validated"); } else { echo ("invalid email given"); }

希望有帮助

反斜杠字符需要通过如下方式加倍来正确转义:

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

使用此模式,preg_match正确返回1。

无法复制。正则表达式没问题。示例代码对我来说很好。对我来说很好:@SirDarius:谢谢。这就是问题所在!:)-使用PHP的本机
filter\u var
而不是通常不使用的正则表达式。只有在反斜杠前面加上另一个反斜杠、双引号、$、八进制文字或一个ascii转义符时,才会去除反斜杠\r\n\t<代码>打印“\”将打印
\。
虽然反斜杠转义不是强制性的,但强烈建议在双引号字符串中执行此操作,尤其是在您可能意外插入导致创建有效转义序列的字符时。