JavaScript中str.replace()无法替换所有匹配字符的问题求助
问题原因
JavaScript里的String.replace()方法,要是第一个参数传的是普通字符串,只会替换第一个匹配到的目标字符,不会全局替换。这就是你只看到第一个单引号/字母n被替换,最后一个没变化的原因。
解决方案
要实现所有匹配项都被替换,得把第一个参数改成带g(全局匹配)标志的正则表达式:
处理单引号的正确代码
var tester = "O'neal is walkin'"; tester = tester.replace(/'/g, "''"); console.log(tester); // 输出: O''neal is walkin''
处理字母n的正确代码
var tester = "O'neal is walkin"; tester = tester.replace(/n/g, "$&g"); console.log(tester); // 输出: O'ngeal is walking
补充说明
- 正则表达式里的
g标志是关键,它会让方法匹配字符串中所有符合条件的字符,而不是只找第一个。 - 替换单引号时,直接写
"''"和用"$&'"效果完全一样,前者更直观,$&的作用是引用匹配到的原字符,两种写法都能达到目的。
内容的提问来源于stack exchange,提问作者BlackTecno
相关产品推荐
相关产品推荐

