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

JavaScript正则过滤特殊字符后多余空格处理与字符串拆分问题

问题原因

你的代码存在两个核心问题:

  • 正则匹配到连续多个需要剔除的字符时,每个字符都会被替换为1个空格,最终产生连续的多个空格,按单个空格拆分后自然会生成空字符串项
  • 没有对替换后的连续空格做合并处理,也没有过滤拆分结果里的空值

修复方案

有两种常用实现方式,均可达到预期效果:

方案1:合并连续空格后再拆分

先替换特殊字符为空格,合并连续空格、去除首尾空格后再拆分:

const input = 'this is a signal , entry : 24.30 and side is short';
// 替换特殊字符为空格 → 合并连续空格 → 去除首尾空格 → 转大写
const text = input.replace(/\.(?!\d)|[^\w.]/g, " ")
                  .replace(/\s+/g, " ")
                  .trim()
                  .toUpperCase();
console.log(text.split(" "))

方案2:拆分后直接过滤空项

不想额外加正则处理空格的话,可以拆分后直接过滤所有空字符串:

const input = 'this is a signal , entry : 24.30 and side is short';
const text = input.replace(/\.(?!\d)|[^\w.]/g, " ").toUpperCase();
// 过滤空字符串项
const result = text.split(" ").filter(item => item);
console.log(result)

两种方案的输出均和你预期一致:

[
  'THIS',   'IS',    'A',
  'SIGNAL', 'ENTRY', '24.30',
  'AND',    'SIDE',  'IS',
  'SHORT'
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:54:04