如何使用PHP preg_match函数验证Brainstake公司邮箱格式
修正Brainstake公司邮箱验证的正则表达式
你的问题出在当前使用的正则表达式对域名部分的匹配逻辑错误,导致无法正确识别something@brainstake.tech格式的邮箱。
原正则的问题分析
原正则/^[_a-z0-9-+]+(\.[_a-z0-9-+]+)*@[brainstake-]*(\.[tech]{2,})$/i存在两个核心错误:
[brainstake-]*是字符集合匹配,会匹配任意顺序的b/r/a/i/n/s/t/a/k/e/-字符(甚至重复或缺失),而不是完整的brainstake字符串。(\.[tech]{2,})中的[tech]同样是字符集合,会匹配t/e/c/h中的任意字符2次以上(比如.tt、.ec都能通过),并非固定匹配.tech后缀。
修正后的正则表达式
将域名部分改为固定匹配brainstake.tech,修正后的正则如下:
$pattern = "/^[_a-z0-9-+]+(\.[_a-z0-9-+]+)*@brainstake\.tech$/i";
完整修正后的代码
private function validateEmail(){ $result = null; // 仅匹配 brainstake.tech 域名的邮箱 $pattern = "/^[_a-z0-9-+]+(\.[_a-z0-9-+]+)*@brainstake\.tech$/i"; if (!preg_match($pattern, $this->email)){ $result = false; echo "仅允许使用Brainstake公司邮箱。"; } else{ $result = true; } return $result; } if ($this->validateEmail() == false){ echo "请使用正确的邮箱格式"; header("location: ../pages/sign-up.php?error=wrongEmailFormat"); exit(); }
验证说明
- 该正则会严格匹配任意合法邮箱本地部分 +
@brainstake.tech的格式,比如john.doe@brainstake.tech、jane+test@brainstake.tech都能通过验证。 - 非
brainstake.tech域名的邮箱(如test@gmail.com)或格式错误的邮箱(如brainstake.tech、test@brainstake)都会被拦截。
内容的提问来源于stack exchange,提问作者jeremiah muchazondida
相关产品推荐
相关产品推荐

