You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于textarea与div的代码编辑器HTML标签替换异常问题求助

解决代码编辑器文本截断问题

嘿,我一眼就瞅出你这个问题的症结所在了——正则表达式的写法错了!

你当前用的替换代码是:

str.replace('/</g', "<")

这里的第一个参数'/</g'是普通字符串,不是真正的正则表达式。JavaScript里如果把正则放在引号里,它会被当成纯文本去匹配,根本不会按正则规则全局查找<。这就导致你的替换逻辑完全偏离预期:

  • 输入test <时,因为文本里没有'/</g'这个内容,替换等于没执行,所以显示正常;
  • 继续输入字符后,错误的匹配规则意外打乱了文本结构,最终引发内容截断。

正确的写法

把正则写成字面量形式(不带引号),或者用RegExp构造函数创建正则对象:

方法1:正则字面量(推荐)

str = str.replace(/</g, "<");

这里/</g是标准正则表达式,g标识全局匹配所有符合条件的内容。

方法2:RegExp构造函数

str = str.replace(new RegExp('<', 'g'), "<");

这种方式适合动态生成正则规则的场景,第二个参数'g'同样表示全局匹配。

额外小提示

做代码编辑器语法高亮时,建议统一处理所有需要转义的特殊字符(比如&、<、>),而且要注意转义顺序——比如先把&转成&amp;,再处理其他标签,避免出现嵌套转义的问题。

内容的提问来源于stack exchange,提问作者P. Jerome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:41:20