php表达式仅用于小写和下划线用于电子邮件验证

时间:2014-03-18 23:07:46

标签: php regex email

我正在尝试让用户注册所需的电子邮件。但是我不希望他们输入'@domain.com',我只是想让他们输入用户名,('@'左边的所有内容)。另外,我如何确保左侧唯一的字符是小写字母,数字和下划线?基本上如果他们输入大写字母,它应该降低它。我确实知道strtolower,但我不太清楚如何在我的脚本中实现它。我只希望我的脚本能够验证一个域,在本例中为'domain.com'

我的脚本需要填充这些字段

$email = ($_POST['email']);

并检查它是否有效

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
                echo "You have entered an invalid email. Press back and try again.";
                $db = null;
        exit();
        }

所以我知道我需要对$email变量做些什么。对不起,我有点新的PHP

3 个答案:

答案 0 :(得分:0)

请参阅以下内容:

strtolower:http://php.net/manual/en/function.strtolower.php

strpos:http://php.net/manual/en/function.strpos.php

$email=strtolower($email);
if(strpos($email,'@')){
//Fail
}

然后只需按照指定的方法验证filter_var。

答案 1 :(得分:0)

你做错了,因为' @'左边有一系列字符。哪些在电子邮件地址中有效,但这是你想要的:

$stub = strtolower($_POST['email']);
$email = $stub . "@domain.com";
if ((preg_match("/[^a-z0-9_]/", $stub)) || 
    (filter_var($email, FILTER_VALIDATE_EMAIL) === false) ) {
    echo "Invalid email....";
    die;
}

答案 2 :(得分:-1)

$email = strtolower('dsfds_09azZdsf');

if (strlen($email) == strlen(preg_replace('#[^a-z_0-9]#i', '', $email)))
{
    echo 'valid';
}
    else
    {
        echo 'not valid';
    }