【JavaScript】详解JavaScript中的replace()函数

JavaScript 中 replace() 函数最全详解(2025 最新版)

你绝对能在这篇文章里找到所有你想知道的 replace() 用法,包括新手常见坑和高级玩家技巧!

一、基本语法(两种重载)

string.replace(searchValue, replaceValue)// 或 string.replace(searchValue,function)
参数类型含义返回值
字符串普通字符串替换,只替换第一次出现新字符串
正则表达式支持全局 g、忽略大小写 i 等修饰符按规则替换后的新字符串
函数超级强大!可以动态计算每一个替换结果新字符串

注意:replace() 不会修改原字符串(字符串是不可变的),永远返回新字符串!

二、常见用法速查表(直接抄作业)

需求写法结果示例
替换第一次出现"aaabbb".replace("a", "X")“Xaabbb”
替换所有出现(重点!)"aaabbb".replace(/a/g, "X")“XXXbbb”
不区分大小写全局替换"AbcABCabc".replace(/aBc/i, "X") → 只会换第一个
/abc/gi
“XABCX”
替换多个不同内容`.replace(/catdog/g, “pet”)`
只替换第2次出现"aaa".replace(/a/g, (m, i) => i === 1 ? "X" : m)“aXa”
替换并保留原匹配内容(加前后缀)"hello".replace(/hello/g, '[HELLO]')“[HELLO]”
替换成大写"hello world".replace(/\b\w/g, c => c.toUpperCase())“Hello World”(首字母大写)

三、最强大用法:替换函数(必背!)

str.replace(regexp|substr,function(match, p1, p2,..., offset, string){// match :完整匹配的内容// p1,p2… :第1、2…个捕获组// offset :匹配项在原字符串中的起始位置// string :原字符串return'要替换成的内容';})
经典实战案例
// 1. 手机号中间4位变星号"13812345678".replace(/(\d{3})\d{4}(\d{4})/,'$1****$2')// → "138****5678"// 2. 更灵活写法(推荐)"13812345678".replace(/(\d{3})\d{4}(\d{4})/,(match, p1, p2)=>`${p1}****${p2}`)// → "138****5678"// 3. 千分位加逗号(最常见面试题)functionformatNumber(num){return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");}formatNumber(1234567890) → "1,234,567,890"// 4. 模板字符串替换(类似 Vue {{}})let data ={ name:"张三", age:18};let tpl ="你好,{{name}},今年{{age}}岁";let result = tpl.replace(/\{\{(\w+)\}\}/g,(match, key)=> data[key]||'');// → "你好,张三,今年18岁"// 5. 驼峰转中划线(css类名转换)"borderColor".replace(/([A-Z])/g,'-$1').toLowerCase()// → "border-color"// 6. 替换时知道是第几次匹配let count =0;"aaaa".replace(/a/g,()=>`X${++count}`)// → "X1X2X3X4"

四、超实用正则旗标表

旗标含义示例
gglobal,全局匹配/a/g 替换所有 a
iignoreCase,忽略大小写/abc/i 能匹配 AbC
mmultiline,多行模式^ 和 $ 可以匹配每一行开头结尾
sdotAll,. 可匹配换行符/./s
uunicode,支持 Unicode/\u{1F600}/u 匹配emoji
ysticky,粘性匹配很少用

五、常见坑 & 注意事项

场景错误写法正确写法
想替换所有但忘了加 g"aaa".replace(/a/, 'b')"aaa".replace(/a/g, 'b')
用字符串替换所有"aaa".replace('a', 'b')只会换第一个!必须用正则 + g
特殊字符 $ 要转义.replace(/$/g, 'dollar').replace(/\$/g, 'dollar')
$1 $2 捕获组在替换字符串中使用.replace(/(\d)/, $1 + 1)必须用函数,不能直接写 $1 + 1

六、一行代码解决 99% 需求

// 万能替换函数(建议封装)functionreplaceAll(str, search, replacement){return str.replace(newRegExp(search,'g'), replacement);}// 或者更安全(防止正则特殊字符报错)functionreplaceAll(str, search, replacement){return str.split(search).join(replacement);}

现在你已经完全掌握 JavaScript replace() 了!
这篇文章涵盖了从入门到高级的所有用法,直接收藏,面试、写业务再也不怕!

需要我给你出一个「replace() 练习题 20 道」或者「手写千分位、手机号脱敏、模板引擎」完整代码吗?随时说!

Read more

数据库迁移 TCO 全景账本:MySQL 替代中的隐性成本与工程化工具链实测

数据库迁移 TCO 全景账本:MySQL 替代中的隐性成本与工程化工具链实测

文章目录 * 前言:决策者的“隐形焦虑”与迁移困局 * 一、 TCO 全景账本:隐性成本都藏哪儿了? * 1. 成本结构深度对比 * 2. 效率数据实测 * 二、 迁移主力军:KDTS 自动化迁移深度解析 * 1. 核心黑科技:智能映射与兼容 * 2. 实战流程:让迁移可复用、可验收 * 三、 零停机保障:KFS 双轨增量同步与“后悔药” * 1. 架构原理:双轨运行,进退自如 * 2. 实战演示:KFS 任务配置与验证 * 四、 最后一公里:一致性校验与修复怎么做(验收闭环) * 1) 迁移报告先把问题前置 * 2) 同步链路侧做一致性比对与修复 * 3) 业务侧做关键指标对账(强烈建议) * 五、 结语:

By Ne0inhk
Rust与Redis数据库开发实战:构建高性能会话管理系统

Rust与Redis数据库开发实战:构建高性能会话管理系统

Rust与Redis数据库开发实战:构建高性能会话管理系统 一、引言 💡Redis是一款高性能的内存数据库,它支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等,具有读写速度快、内存占用少、跨平台等特点,非常适合开发缓存、消息队列、会话管理、实时数据分析等应用。 Rust语言以其内存安全、高性能和良好的工具链支持,成为开发Redis应用的理想选择。Rust生态系统中提供了多个优秀的Redis库,其中redis-rs是最成熟、最流行的一个。redis-rs提供了安全、易用的API,支持Redis的全部功能,包括事务处理、管道操作、发布订阅等。 二、开发环境搭建 2.1 安装Redis Redis通常已经预装在大多数操作系统中,你可以通过以下命令检查是否安装: # 检查Redis版本 redis-cli --version 如果没有安装,可以通过以下命令安装: macOS # 使用Homebrew安装 brew install redis # 启动Redis服务 brew services

By Ne0inhk

GO谷歌安装器.apk一键安装包:快速安装Google三件套

GO谷歌安装器.apk一键安装包:快速安装Google三件套 【下载地址】GO谷歌安装器.apk一键安装包GO谷歌安装器.apk是一款专为Android设备设计的便捷工具,集成了Google三件套(Google Play商店、Google服务框架、Google账户管理器),帮助用户快速完成安装。通过一键操作,简化了繁琐的安装步骤,确保安全可靠。该安装器兼容性强,适用于多种设备,让用户轻松享受Google应用服务。只需下载并按照提示操作,即可在设备上畅享Google功能。无论是新手还是资深用户,GO谷歌安装器都能为您提供高效、无忧的安装体验。 项目地址: https://gitcode.com/Premium-Resources/b1af5 在众多Android设备的应用安装工具中,GO谷歌安装器.apk一键安装包无疑是最引人注目的选择之一。它为用户提供了便捷、高效的方式来安装Google三件套,无需繁琐步骤,让使用Google服务的体验变得更加轻松。 项目介绍 GO谷歌安装器.apk是一个专为Android用户设计的安装工具,其核心功能是帮助用户一键安装Google Play

By Ne0inhk
Spring Boot 3.3.x、3.4.x、3.5.x 深度对比与演进分析

Spring Boot 3.3.x、3.4.x、3.5.x 深度对比与演进分析

Spring Boot 3.3.x、3.4.x、3.5.x 深度对比与演进分析 ——从稳定性、架构能力到长期演进策略的系统性解读 本文 从 “架构师 / 技术负责人视角”。进一步 拉开层次、拉深分析深度,不只是“版本有什么”,而是说: 为什么要升?什么时候升?升到哪一条线风险最低?不同类型系统怎么选? 一、背景:Spring Boot 3.x 已进入“成熟期” 从 2023 年 Spring Boot 3.0 正式落地 Jakarta EE 9+ 开始,3.x

By Ne0inhk