将前端JavaScript邮箱校验正则表达式转换为PHP后端校验正则
把前端JS邮箱正则转换为PHP后端校验正则
嘿,这事儿很简单,咱们来一步步搞定转换:
首先你要知道,前端用RegExp构造函数创建正则时,因为是字符串参数,所以里面的反斜杠必须写两次(\\)来转义;而PHP里直接用正则定界符(比如常用的/)时,只需要保留单个反斜杠就行,不用额外转义。
转换后的PHP正则表达式
$pattern = '/^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$/';
在PHP中使用它校验邮箱的示例
你可以借助preg_match()函数来完成校验,写个简单的封装函数更方便复用:
function validateEmail($email) { $pattern = '/^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$/'; // preg_match匹配成功返回1,失败返回0,所以用严格等于判断 return preg_match($pattern, $email) === 1; } // 测试示例 $testEmail1 = 'user.name_123@sub-domain.com'; $testEmail2 = 'invalid-email@.com'; echo validateEmail($testEmail1) ? '邮箱格式正确' : '邮箱格式错误'; // 输出:邮箱格式正确 echo '<br>'; echo validateEmail($testEmail2) ? '邮箱格式正确' : '邮箱格式错误'; // 输出:邮箱格式错误
额外说明
这个PHP正则和你前端的逻辑完全一致:
- 允许邮箱前缀包含字母、数字、下划线、连字符,还支持带点的多级前缀(比如
john.doe) - 域名部分支持字母、数字,以及多级子域名(比如
mail.company.co.uk) - 要求顶级域名长度至少2位(比如
.com、.org)
内容的提问来源于stack exchange,提问作者Darko Darac
相关产品推荐
相关产品推荐

