replace未全局替换的坑

本文详细解析了JavaScript中replace方法的使用误区,特别是当需要全局替换字符串中的特定字符时,使用正则表达式的全局标志符(g)的重要性。通过实例演示了如何正确地进行全局替换,避免仅替换首次出现的目标字符的问题。

replace未全局替换的坑

今天是名副其实的周六。悠闲了一早上(太阳).

真是人在家中坐,BUG自天上来。哈哈其实也不是自天上来,还是自己之前埋下的雷。

 

所以修复完线上的bug,我脑中立刻浮现出两件还需要做的事情:

一,就是我现在做的,赶紧记录下来这个重要的时刻;

二,就是我要去练练俯卧撑(笑哭)至于为啥呢,这就是惩罚嗯嗯;

不啰嗦了。赶紧的上重点(其实就是一个小细节):

console.log(('1,234,456').replace(',',''));我本以为他会帮我替换全局的逗号然后输出:1234456。

事实上,输出的是:1234,456(天啊只帮我去掉了第一个逗号)。

 

修复方法:

使用console.log(('1,234,456').replace(/,/g,''));

输出:1234456,对这才是我想要的,profect就是这样。

posted @ 2018-11-17 13:09 _只鱼 阅读( ...) 评论( ...) 编辑 收藏
### JavaScript 中使用正则表达式进行全局替换 在 JavaScript 中,`String.prototype.replace()` 方法可以通过传递带有 `g` 修饰符的正则表达式来实现全局替换。当正则表达式的标志设置为 `g`global),表示会查找并替换字符串中的 **所有匹配项**,而不仅仅是第一个匹配项。 以下是具体说明和示例: #### 使用 `replace()` 进行全局替换 通过将正则表达式作为第一个参数传入,并在其定义中加入 `g` 修饰符,可以完成全局替换操作[^1]。例如: ```javascript const originalStr = 'aaa'; const replacedStr = originalStr.replace(/a/g, 'b'); console.log(replacedStr); // 输出:"bbb" ``` 在此例子中,正则表达式 `/a/g` 的含义如下: - `/a/`: 表示要匹配字符 `'a'`- `g`: 表示全局匹配,即找到字符串中的每一个 `'a'` 并执行替换。 如果没有指定 `g` 修饰符,则仅会替换第一次出现的目标子串: ```javascript const partialReplacedStr = originalStr.replace(/a/, 'b'); console.log(partialReplacedStr); // 输出:"baa" ``` #### 替换逻辑扩展:动态替换 除了简单的静态字符串替换外,还可以利用回调函数实现更复杂的替换逻辑。在这种情况下,第二个参数是一个函数而不是字符串。该函数会在每次匹配时被调用,其返回值会被当作新的替代内容[^3]。例如: ```javascript const strWithNumbers = 'Item1 Item2 Item3'; const result = strWithNumbers.replace(/\d+/g, (match) => { return parseInt(match, 10) * 2; }); console.log(result); // 输出:"Item2 Item4 Item6" ``` 在这个例子中,每当发现数字时,都会将其乘以 2 后再插入回原位置。 #### 获取正则表达式的源码形式 如果需要查看某个已创建好的正则对象的具体模式或者调试用途下打印出来确认无误的话,可借助 `.source` 属性获取原始模式字符串[^2]。比如下面这段代码展示了如何提取出正则表达式的主体部分而不带任何额外标记如括号等特殊符号之外的内容: ```javascript const regexExample = /\w+\s*=\s*\d+/gi; console.log(regexExample.source); // 输出:"\w+\s*=\s*\d+" ``` 以上便是关于 JavaScript 中运用正则表达式配合 replace 函数达成全面替代表现的相关知识点解析以及实际应用场景演示。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值