match用于提取内容,返回匹配数组(含捕获组、index等属性)或null;search用于定位位置,只返回首个匹配索引或-1。

match 返回匹配结果数组(含捕获组信息),search 只返回第一个匹配项的索引位置(找不到为 -1)。
match:侧重“提取内容”,返回匹配详情
match 接收正则表达式,返回一个数组(成功时)或 null(失败时)。数组首项是完整匹配字符串,后续是各捕获组匹配内容;若正则带 g 标志,则返回所有匹配项组成的数组(不包含捕获组信息)。
- 无 g 标志:返回详细匹配信息(含 groups、index、input 等属性)
- 有 g 标志:只返回纯匹配字符串数组,丢失位置和分组信息
- 不支持字符串参数,必须传 RegExp 对象
例:"abc123def".match(/(\d+)/) → ["123", "123", index: 3, input: "abc123def"]
search:侧重“定位位置”,返回索引值
search 也接受正则或字符串(字符串会被隐式转为 RegExp),但只关心“有没有匹配”以及“从哪开始”。它总是返回第一个匹配项的起始下标,没找到就返回 -1。
- 忽略全局标志 g,始终只查第一个匹配
- 不提供匹配内容、分组或结束位置等信息
- 适合做存在性判断或定位,不适合提取内容
例:"hello world".search(/o/) → 4;"abc".search(/d/) → -1
选哪个?看你要的是“内容”还是“位置”
需要拿到匹配的文本、分组、位置偏移等详细信息 → 用 match;只需要知道“是否出现”或“从哪开始” → 用 search 更轻量。如果只是判断子串是否存在,includes() 或 indexOf() 往往更直接。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











