Java正则表达式实战:邮箱与电话号码格式验证

一、前言

在日常开发中,数据格式验证是保证系统安全的重要环节。本文将使用Java正则表达式实现两个常见的验证场景:电话号码(含手机/座机)和电子邮箱的格式校验,并详细解析实现原理。

二、实现目标

  1. 电话号码验证

    • 手机号:13/14/15/17/18/19开头的11位数字

    • 座机号:区号(3-4位)- 电话号码(7-8位),支持短横线连接

  2. 邮箱验证

    • 用户名:至少2位字母/数字/下划线

    • 域名:支持二级/三级域名(如xxx.com / xxx.com.cn)


三、手机号验证实现

正则表达式解析

(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19})

结构分解

  1. 手机号部分

    • 1[3-9]:匹配13-19开头的运营商号段

    • \\d{9}:匹配后续9位数字

  2. 座机号部分

    • 0\\d{2,7}:匹配区号(3-8位)

    • -?:可选短横线连接符

    • [1-9]\\d{4,19}:确保电话号码不以0开头


四、邮箱验证实现

正则表达式解析

\\w{2,}@(\\w{2,20}\\.\\w{2,10}){1,2}

结构分解

  1. 用户名部分

    • \\w{2,}:至少2位字母/数字/下划线

  2. 域名部分

    • (\\w{2,20}\\.):匹配二级域名(如"qq.")

    • \\w{2,10}:匹配顶级域名(如"com")

    • {1,2}:支持二级或三级域名(如"xxx.com.cn")


五、完整代码实现

import java.util.Scanner;

public class Validator {
    public static void main(String[] args) {
        validatePhone();
        validateEmail();
    }

    private static void validateEmail() {
        while (true) {
            System.out.println("请输入邮箱地址:");
            Scanner sc = new Scanner(System.in);
            String email = sc.nextLine();
            if (email.matches("\\w{2,}@(\\w{2,20}\\.\\w{2,10}){1,2}")) {
                System.out.println("邮箱格式正确");
                break;
            } else {
                System.out.println("邮箱格式错误!示例:name@domain.com");
            }
        }
    }

    private static void validatePhone() {
        while (true) {
            System.out.println("请输入手机号|座机号:");
            Scanner sc = new Scanner(System.in);
            String phone = sc.nextLine();
            if (phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19})")) {
                System.out.println("号码格式正确");
                break;
            } else {
                System.out.println("号码格式错误!手机号示例:13812345678,座机示例:010-1234567");
            }
        }
    }
}

六、优化建议

  1. 增强座机号验证

// 更精确的座机号匹配(3-4位区号 + 7-8位号码)
(0\\d{2,3}-?[1-9]\\d{6,7})

   2.支持带连字符的邮箱

// 允许域名包含短横线
[a-zA-Z0-9-]{2,20}\\.[a-zA-Z0-9-]{2,10}

   3.国际号码扩展

// 添加国际区号支持
(\\+\\d{1,4})?1[3-9]\\d{9}

七、总结

通过本文可以实现:

  • ✅ 基础手机/座机号验证

  • ✅ 常见邮箱格式校验

  • 🔧 可扩展性强,方便添加新规则

注意事项

  1. 实际生产环境建议使用Apache Commons Validator等成熟工具

  2. 需结合数据库校验保证数据唯一性

  3. 前端应做双重验证提升用户体验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值