70 views
# Email 地址验证正则表达式 ## 测试报告 基于正则表达式: ``` /\A[a-zA-Z0-9+]+([._-][a-zA-Z0-9+]+)*@[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}\z/ ``` ### 1. ✅ 允许通过 (Allowed) | 测试用例 | 类型 | 代码行为 | 原因分析 | | :--- | :--- | :--- | :--- | | `[email protected]` | 标准格式 | **允许** | 基础结构完全匹配。 | | `[email protected]` | 用户名含下划线 | **允许** | `_` 被视为合法字符。 | | `[email protected]` | 用户名含加号 | **允许** | `+` 被视为合法字符,支持别名。 | | `[email protected]` | 用户名含点 | **允许** | 点号前后都有字符。 | | `[email protected]` | 纯数字用户名 | **允许** | `[a-zA-Z0-9+]+` 涵盖纯数字。 | | `[email protected]` | 混合符号 | **允许** | `-` 和 `.` 位置正确且不连续。 | | `[email protected]` | 极短用户名 | **允许** | 用户名长度 ≥ 1。 | | `[email protected]` | 域名含连字符 | **允许** | 域名中间允许 `-`。 | | `[email protected]` | 多级域名 | **允许** | 支持无限级子域名结构。 | | `[email protected]` | 长 TLD | **允许** | TLD 允许长字符串。 | --- ### 2. ❌ 拒绝:连续符号与位置错误 (Disallowed - Symbols) | 测试用例 | 类型 | 代码行为 | 原因分析 | | :--- | :--- | :--- | :--- | | `[email protected]` | 连续点 | **拒绝** | 用户名中 `..` 连续。 | | `[email protected]` | 连续横杠 | **拒绝** | 用户名中 `--` 连续。 | | `[email protected]` | 连续下划线 | **拒绝** | 用户名中 `__` 连续。 | | `[email protected]` | 域名连续符号 | **拒绝** | 域名中 `.-` 连续。 | | `[email protected]` | 域名连续点 | **拒绝** | 域名中 `..` 连续。 | | `[email protected]` | 符号开头 | **拒绝** | 用户名不能以 `.` 开头。 | | `[email protected]` | 符号结尾 | **拒绝** | 用户名不能以 `.` 结尾。 | | `[email protected]` | 域名符号开头 | **拒绝** | 域名段不能以 `-` 开头。 | | `[email protected]` | 域名符号结尾 | **拒绝** | 域名段不能以 `-` 结尾。 | --- ### 3. ❌ 拒绝:域名非法字符 (Disallowed - Domain Chars) 关于域名部分的规则:只能是字母、数字和连字符(-)。 | 测试用例 | 类型 | 代码行为 | 原因分析 | | :--- | :--- | :--- | :--- | | `123@email_me.com` | 域名含下划线 | **拒绝** | 标准域名规范(DNS)不允许下划线。 | | `[email protected]` | TLD 过短 | **拒绝** | 顶级域名至少 2 个字母。 | | `[email protected]` | 数字 TLD | **拒绝** | 顶级域名必须是纯字母。 | | `[email protected].` | 结尾有点 | **拒绝** | 域名不能以点结束。 | --- ### 4. ❌ 拒绝:空格与格式 (Disallowed - Spaces & Format) | 测试用例 | 类型 | 代码行为 | 原因分析 | | :--- | :--- | :--- | :--- | | `abc <[email protected]>` | 带名称格式 | **拒绝** | 正则使用 `\A` 和 `\z` 锚定了整个字符串,检测的是"纯粹的邮箱地址",含空格和尖括号会直接匹配失败。 | | `name [email protected]` | 用户名含空格 | **拒绝** | 空格 `\s`不在允许的字符集 `[a-zA-Z0-9+._-]` 中。 | | ` [email protected]` | 开头有空格 | **拒绝** | `\A` 紧接着要求字母/数字,空格会导致不匹配(除非先 trim)。 | | `[email protected] ` | 结尾有空格 | **拒绝** | `\z` 要求紧接域名结束,空格会导致不匹配。 | | `name@ email.com` | @后有空格 | **拒绝** | 域名部分不允许空格。 |