String.matches()用于全字符串正则校验,自动添加^和$,需双反斜杠转义,空值需判空,高频场景建议预编译Pattern。

用 String.matches() 方法最直接,它专为全字符串正则校验设计,返回 boolean 值。
matches() 是全匹配,不是找子串
它要求整个字符串从头到尾都符合正则,等价于在正则前后自动加上 ^ 和 $,不需要手动写。
-
"123".matches("\d+")→ true(全是数字) -
"abc123".matches("\d+")→ false(开头有字母) -
"hello".matches("he.*o")→ true(从 h 开始、到 o 结束) -
"hello world".matches("he.*o")→ false(后面还有空格和 word)
注意 Java 字符串里的转义
正则中的反斜杠在 Java 字符串中要写成双反斜杠 ,否则编译不通过或语义错误。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 匹配数字:
"\d+"(不是"d+") - 匹配小数点:
"\d+\.\d+"(.是元字符,必须转义) - 匹配邮箱:
"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"
安全与性能要点
校验前需判空,且高频使用建议预编译 Pattern。
立即学习“Java免费学习笔记(深入)”;
-
null调用 matches 会抛NullPointerException,应先检查:str != null && str.matches(regex) - 空字符串
""可以调用,是否匹配取决于正则(如"".matches("a*")是 true,"".matches("a+")是 false) - 同一正则反复校验时,用
Pattern.compile(regex).matcher(str).matches()更高效,避免重复编译
需要部分匹配时换方法
如果目标是“包含某模式”或“从开头匹配”,不要用 matches:
- 检查是否**包含**:用
Pattern.compile("regex").matcher(str).find() - 检查是否**从开头匹配**(不要求到结尾):用
.lookingAt()

















