电子邮件验证php

Daw*_*ski 0 php email validation

基本上我需要验证包含确切字母的电子邮件.让我们说我的学院有一个id为x12627353@student.ncirl.ie的学生,我希望验证强制学生在电子邮件开头输入x,然后输入8个随机数的学生卡,最后进行验证要求@ student.ncirl.ie.其他明智的做法是不允许学生注册并登录网站.

我的代码是:

 if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
        $error = true;
        $emailError = "Please enter valid email address.";
    } else {
        // check email exist or not
        $query = "SELECT userEmail FROM users WHERE userEmail='$email'";
        $result = mysql_query($query);
        $count = mysql_num_rows($result);
        if($count!=0){
            $error = true;
            $emailError = "Provided Email is already in use.";
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想这样做:\b[x0-9._%+-]+@student.ncirl.ie\b但我只是php的初学者,我无法实现它.如果有人能够,你可以通过创建示例代码来帮助我吗?或简要说明.谢谢.

Jaz*_*azZ 5

你必须深入了解preg_match()函数.

搜索主题匹配模式中给出的正则表达式.

例如 :

$email = "x12627353@student.ncirl.ie";
$result = preg_match('/^x[\d]{8}@student\.ncirl\.ie$/', $email);

if ($result) {
    ...
    do some stuff
    ...
}
Run Code Online (Sandbox Code Playgroud)

regex101上正则表达式的测试.

解释:

^断言字符串开头的位置

x与字符x字面匹配(区分大小写)

匹配下面列表中的单个字符:

[\ d] {8}

{8}量词 - 准确匹配8次

\ d匹配一个数字(等于[0-9])

@student字面匹配字符@student(区分大小写)

.匹配角色.字面意思(区分大小写)

ncirl字面匹配字符ncirl(区分大小写)

.匹配角色.字面意思(区分大小写)

匹配字符即字面意思(区分大小写)

$断言字符串末尾的位置,或者在字符串末尾的行终止符之前(如果有的话)

希望能帮助到你.