js拾遗: replace 替换参数
先来看一个简单的例子吧。
1 | var str = "123X321" .replace( "X" , "$'" ); |
替换后的 str 是什么呢?
是 "123$'321" 。。。吗??
如果你的浏览器是 IE6-8 的话,确实是这个结果,可是那只是变态IE的结果。
标准浏览器下会是什么呢?
1 2 | var str = "123X321" .replace( "X" , "$'" ); console.log(str); |
点击右上角 运行 看看结果吧。
竟然是 "123321321" 为什么会是这个结果呢?
还是看权威的文档吧,《Specifying a string as a parameter》。
在这里,我们可以看到 $$, $&, $`, $' 和 $n/$nn 的格式。
相信很多学过 js 正则的应该都用印象。
其实我一直以为只有在正则里才能用这些替换参数,直到前些天被坑才真正掌握这个知识点。
其实 $$, $&, $`, $' 在普通字符串替换时也可以使用
$$ 表示 $ 字符
$& 表示匹配到的字符
$` 表示匹配到的字符之前的那部分
$' 表示匹配到的字符之后的那部分
但是 $n 或 $nn 只有在正则模式捕获组才能使用。
例如
1 2 3 4 5 6 7 8 9 10 | var str = "123X321" ; console.log( "$$" , str.replace( "X" , "$$" ) ); // X 换成了 $ console.log( "$&" , str.replace( "X" , "$&" ) ); // X 换成了 X console.log( "$`" , str.replace( "X" , "$`" ) ); // X 换成了 123 console.log( "$'" , str.replace( "X" , "$'" ) ); // X 换成了 321 console.log( "$'" , str.replace(/X/, "$'" ) ); // X 换成了 321 // $n 这种格式只有正则能用 console.log( "$1" , str.replace(/(X)(\d)/, "$1" ) ); // X3 换成了 X console.log( "$2$1" , str.replace(/(X)(\d)/, "$2$1" ) ); // X3 换成了 3X |
这样应该很清楚这些替换参数的作用了吧,,千万别再次被坑到了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
2013-07-09 jQuery下实现等待指定元素加载完毕