javascript中string对象通过search、match、replace、split四个方法原生支持正则表达式:search定位首个匹配索引;match提取匹配内容,g标志影响返回格式;replace按规则替换文本,支持捕获组引用和函数回调;split依正则切割字符串,捕获组内容可保留在结果中。

JavaScript 中 String 对象原生支持正则表达式,主要通过四个方法实现: search、match、replace 和 split。它们不是“调用正则的方法”,而是字符串主动接受正则作为参数来完成匹配、提取、替换或分割操作。
search():只找第一个匹配位置
用于定位子串首次出现的索引,返回数字(从 0 开始)或 -1(未找到)。它忽略 g 标志,也不记录匹配内容,只关心“在哪”。
- 支持 RegExp 实例或字符串(字符串会被隐式转为 RegExp,但不支持标志)
- 大小写敏感,除非正则带
i标志 - 示例:
"Hello world".search(/o/g)返回4(第一个 o 的位置,g 被忽略)
match():提取匹配内容
返回匹配结果数组(含额外属性),行为取决于是否启用 g 标志:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 无
g:返回首个匹配的详细信息数组,含index和input属性 - 有
g:只返回纯匹配字符串数组,不包含分组或位置信息 - 若没匹配,统一返回
null(不是空数组) - 注意:想获取所有捕获组(如
(\d+)-(\w+)中的两部分),需配合exec循环,match在g模式下会丢弃分组
replace():按规则替换文本
可替换单次或全部匹配,支持字符串或函数作为替换值:
- 正则带
g才能全局替换;否则只换第一个 - 替换字符串中可用
$1、$2引用捕获组,$&表示整个匹配 - 传入函数时,参数依次为匹配项、各捕获组、起始位置、原字符串,适合动态逻辑
- 示例:
"a1b2c3".replace(/(\d)/g, "[$1]")→"a[1]b[2]c[3]"
split():用正则做切割依据
将字符串按匹配内容切开,返回子字符串数组:
- 正则匹配的部分不会出现在结果中(被当作“分隔符”移除)
- 若正则含捕获括号,捕获内容会作为独立元素插入结果数组
- 示例:
"a-b-c".split(/-(.)/)→["a", "b", "c"](因为-(.)匹配-b和-c,b、c被捕获并保留) - 限制切割次数可用第二个参数,如
split(/,/, 2)
不复杂但容易忽略:这些方法都接受 RegExp 或字符串,但只有 RegExp 能携带标志(i、g、m等);用字符串时,标志无效,且无法使用高级语法(如分组、量词需手动转义)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










