Java中校验字符串格式最常用方式是String.matches()全串匹配,需显式加^和$,注意反斜杠转义为"\d",null需判空,建议trim后校验。

Java 中校验字符串格式合法性,最常用、最直接的方式是用 String.matches(String regex) 方法配合恰当的正则表达式。它要求整个字符串完全匹配规则,不允许多余字符,也不允许部分匹配,天然适合格式校验场景。
核心方法:用 matches() 做全串匹配
这个方法内部调用 Pattern.matches(regex, this),返回 true 仅当字符串**从头到尾**都符合正则模式。不需要手动编译 Pattern 或创建 Matcher,简洁安全。
- 写法简单:
"ab12".matches("^[a-zA-Z]{2}\d{2}$") → true - 自动处理边界:
^和$必须显式写出,否则像"xxab12yy"也会匹配成功 - 空字符串或 null 会直接返回 false(null 调用会抛 NullPointerException,需提前判空)
常见格式的正则写法示例
不同业务场景对应不同模式,关键是把“必须是什么”和“只能有多少个”翻译成正则语法:
-
两位字母 + 两位数字(如 js34):
"^[a-zA-Z]{2}\d{2}$" -
两位数字 + 一位字母(如 25Z):
"^[0-9]{2}[a-zA-Z]$" -
11位手机号(以 1 开头,第二位为 3/4/5/7/8):
"^1[34578]\d{9}$" -
标准邮箱(简化版):
"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
注意转义和大小写细节
Java 字符串中反斜杠是转义符,所以正则里的 d 要写成 "\d",w 写成 "\w";字母范围推荐用 [a-zA-Z] 而非 [a-z],避免忽略大写输入。
- 错误写法:
"d{2}"→ 编译报错或语义错误(被当成普通字符 d) - 正确写法:
"\d{2}" - 如果只接受小写字母,明确写
[a-z]{2};若大小写都行,用[a-zA-Z]{2}更稳妥
增强健壮性的实用建议
生产环境别只靠 matches() 一招打天下,加点防护更安心:
- 输入为 null 时先判断:
str == null ? false : str.matches(regex) - 对用户输入 trim() 再校验,避免前后空格干扰:
str.trim().matches(regex) - 复杂规则(如身份证、带校验码的编码)建议封装成独立方法,并附上清晰注释说明规则来源
- 高频校验可预先编译 Pattern 提升性能,但简单场景 matches() 完全够用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











