Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 验证电子邮件id中的Preg匹配问题_Php_Regex_Preg Match All - Fatal编程技术网

Php 验证电子邮件id中的Preg匹配问题

Php 验证电子邮件id中的Preg匹配问题,php,regex,preg-match-all,Php,Regex,Preg Match All,为什么下面的代码将电子邮件ID返回为false或invalid <?php $okay = preg_match( '/^[A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z.]{2,4}$/', "caree.india.support@gmail.com" ); echo $okay; ?> PHP本身已经有一个验证电子邮件的函数,我建议使用它而不是正则表达式 <?ph

为什么下面的代码将电子邮件ID返回为false或invalid

<?php
    $okay = preg_match(
        '/^[A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z.]{2,4}$/', 
        "caree.india.support@gmail.com"
    );
    echo $okay;
?>

PHP本身已经有一个验证电子邮件的函数,我建议使用它而不是正则表达式

<?php
    $email_a = 'caree.india.support@gmail.com';
    $email_b = 'Random words';

    if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
        echo "This ($email_a) email address is considered valid.";
    }
    if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
        echo "This ($email_b) email address is considered valid.";
    }
?>

更多信息可在此处找到:


照汤姆写的做。不要重新发明已经存在并正在发挥作用的东西。但是为了回答你的正则表达式失败的原因:你不允许dots
\.
@mybrainhuts括号表达式不需要转义点:
/^[A-z0-9\.]+[@][A-z0-9\-]+([.][A-z0-9\-]+[A-z.]{2,4}$/
(注意第一个括号末尾添加的点)@亚历克斯贝:你完全正确——我想我是想确保它不会与外卡混淆。应该用你的方式写的!TLD的2到4个字符非常糟糕,请看:MyBrainhuts,我没有发明,我复制了代码并尝试了,当它不起作用时,我在这里问。我是一个非常非常新的bie。。。