String.matches()要求整个字符串完全匹配正则(隐含^和$),适用于简单单次校验;手机号推荐"1[3-9]\d{9}",邮箱推荐"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$",需注意转义、判空及高频场景复用Pattern。

String.matches() 是 Java 中便捷的正则匹配方法,适用于简单、单次的格式校验,比如判断一个字符串是否为合法手机号或邮箱。它内部调用 Pattern.matches(regex, input),要求整个字符串**完全匹配**正则表达式(隐含 ^ 和 $ 边界),无需手动加首尾锚点。
验证中国大陆手机号(11位,以1开头,第二位常见3-9)
注意:仅做基础格式校验,不替代运营商号段实时验证。
推荐正则:"1[3-9]\d{9}"
-
1:首位必须是 1 -
[3-9]:第二位为 3–9(覆盖 13x/14x/15x/17x/18x/19x 等主流号段) -
\d{9}:后续 9 个数字,合起来共 11 位
示例代码:
立即学习“Java免费学习笔记(深入)”;
String phone = "13812345678";
boolean isValidPhone = phone.matches("1[3-9]\d{9}"); // true
验证常见邮箱格式(支持主流域名,兼顾可读性与实用性)
严格 RFC 邮箱正则极复杂,日常校验用简洁可靠的子集即可。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
推荐正则:"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"
-
^[A-Za-z0-9._%+-]+:用户名部分,允许字母、数字及常见符号(. _ % + -) -
@:必须有且仅一个 @ -
[A-Za-z0-9.-]+:域名主体,允许字母、数字、点、短横线 -
\.:必须有一个字面量点(转义) -
[A-Za-z]{2,}$:顶级域至少两个纯字母(如 com、org、xyz、app)
示例代码:
立即学习“Java免费学习笔记(深入)”;
String email = "user.name+tag@domain.co.uk";
boolean isValidEmail = email.matches("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"); // true
使用注意事项与常见陷阱
- 正则中特殊字符(如 .、+、?、*、^、$)需转义,Java 字符串里写成
\.或\+ -
matches()区分大小写;如需忽略大小写,可在正则前加(?i),例如"(?i)[a-z]+@gmail\.com" - 空字符串、null 会直接返回 false(null 调用会抛 NullPointerException,务必先判空)
- 对高频校验场景(如表单提交),建议将正则编译为
Pattern实例复用,避免重复编译开销
简单封装建议(提升可读与复用)
可抽成工具方法,增强语义:
public static boolean isMobile(String s) {
return s != null && s.matches("1[3-9]\d{9}");
}
public static boolean isEmail(String s) {
return s != null && s.matches("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$");
}
调用时更清晰:if (isMobile(phone)) { ... }

















