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

JavaScript:检测并替换粘贴文本中的不可见字符(0x03)

关于不可见字符<0x03>的解析与JS处理方案

1. 字符身份

<0x03>是ASCII控制字符里的文本结束符(ETX, End of Text),属于非打印字符。这类字符本身没有可视化形态,普通textarea会将其视为空白或直接忽略,所以你在textarea里看不到异常,但专业文本编辑器(如Sublime Text)会显示其原始编码标记。

2. 常见来源

  • 从终端输出、老旧系统或专业文本工具复制内容时,这类工具可能用ETX标记文本块结束;
  • 富文本(如Word、网页富文本)转纯文本过程中,格式标记被错误解析为控制字符;
  • 爬虫抓取或自动化生成的文本中,混入了底层数据的控制代码。

3. JavaScript检测与替换方案

检测是否存在ETX字符

用正则匹配ASCII编码的ETX字符:

const hasETX = /\x03/.test(yourInputText);

批量替换为普通空格

全局替换所有ETX字符为标准空格(U+0020):

const cleanedText = yourInputText.replace(/\x03/g, ' ');

实时处理textarea粘贴事件

如果要在用户粘贴时自动清理,可监听paste事件:

const textarea = document.querySelector('textarea');
textarea.addEventListener('paste', (e) => {
  e.preventDefault();
  const pastedText = e.clipboardData.getData('text');
  const cleaned = pastedText.replace(/\x03/g, ' ');
  // 插入到光标位置并调整光标
  const start = textarea.selectionStart;
  const end = textarea.selectionEnd;
  textarea.value = `${textarea.value.slice(0, start)}${cleaned}${textarea.value.slice(end)}`;
  textarea.selectionStart = textarea.selectionEnd = start + cleaned.length;
});

内容的提问来源于stack exchange,提问作者superfive33

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:37:33