JavaScript的replace方法仅替换首个{}配对符号问题咨询
问题原因
JavaScript 内置的String.replace()方法在第一个入参为普通字符串时,默认只会替换第一个匹配到的字符。你代码中对{和}的替换都只传入了字符串格式的匹配规则,因此仅第一对大括号会被替换为<sup>和</sup>标签,第二对大括号不会被命中处理。
修复方案
将{和}的匹配规则更换为带全局匹配标识g的正则表达式即可,修改后的完整代码如下:
function fms(e) { let eq = e eq = eq.replace('f(', '<em>f</em>(') eq = eq.replace(' / ', ' ÷ ') // 加g标识全局匹配所有{ eq = eq.replace(/{/g, '<sup>') // 加g标识全局匹配所有} eq = eq.replace(/}/g, '</sup>') return eq } let a = fms('x{y} x{y}') console.log(a)
修改后执行代码,输出结果为x<sup>y</sup> x<sup>y</sup>,符合预期需求。如果后续需要让f(和/ 的替换也支持全局匹配,同样可以把对应匹配规则更换为带g标识的正则即可。
内容的提问来源于stack exchange,提问作者jwu
相关产品推荐
相关产品推荐

