基本上我需要验证包含确切字母的电子邮件。让我们说我的学院有一个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.";
}
}
我想这样做:\b[x0-9._%+-]+@student.ncirl.ie\b
但我只是php中的初学者,我无法实现它。如果有人能够,你可以通过创建示例代码来帮助我吗?或简要说明。谢谢。
答案 0 :(得分:5)
你必须深入研究preg_match()功能。
搜索主题与模式中给出的正则表达式匹配。
例如:
$email = "x12627353@student.ncirl.ie";
$result = preg_match('/^x[\d]{8}@student\.ncirl\.ie$/', $email);
if ($result) {
...
do some stuff
...
}
regex101上正则表达式的测试。
解释:
^ 在字符串
的开头断言位置x 匹配字符x字面(区分大小写)
匹配下面列表中的单个字符:
<强> [\ d] {8} 强>
{8} 量词 - 准确匹配8次
\ d 匹配一个数字(等于[0-9])
@student 字面匹配字符@student(区分大小写)
。匹配该字符。从字面上看(区分大小写)
ncirl 字面匹配字符ncirl(区分大小写)
。匹配该字符。从字面上看(区分大小写)
即匹配字符即字面意思(区分大小写)
$ 断言字符串末尾或行前的位置 字符串末尾的终结符(如果有的话)
希望它有所帮助。