如何在JavaScript中替换字符串?修复replaceAll未生效的问题
修复方案
错误原因
- 你写的正则
/text2/g是在匹配字面量字符串"text2",而不是变量text2存储的"ain",原字符串里没有"text2",所以替换毫无效果。 - 原代码替换成的是
"__",和你需要的"___"不一致,需要修正。
修复方法
方法1:用RegExp构造函数实现动态正则匹配
当需要用变量作为正则匹配内容时,必须使用RegExp构造函数,把变量和修饰符传入:
var text2 = 'ain'; let text = "The rain in SPAIN stays mainly in the plain"; // 构造全局匹配的正则,替换为___ let result = text.replaceAll(new RegExp(text2, 'g'), '___'); document.getElementById("demo").innerHTML = result;
如果需要忽略大小写(比如匹配SPAIN里的AIN),给修饰符加上i:
let result = text.replaceAll(new RegExp(text2, 'gi'), '___');
方法2:直接用字符串作为replaceAll的匹配目标
replaceAll本身支持传入字符串进行全局替换,无需正则,这种方式更简单:
var text2 = 'ain'; let text = "The rain in SPAIN stays mainly in the plain"; // 直接传入字符串变量,全局替换为___ let result = text.replaceAll(text2, '___'); document.getElementById("demo").innerHTML = result;
注意:如果需要忽略大小写匹配,只能用方法1的正则方式,字符串参数不支持大小写忽略。
内容的提问来源于stack exchange,提问作者M.Riyan
相关产品推荐
相关产品推荐

