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

如何使用JavaScript Regex仅移除数字间破折号两侧空格且不影响字符串场景

字符串破折号空格清理方案

问题原因

最初的正则未生效是因为Excel自动将普通半角短破折号转换为了长破折号(en dash/em dash),正则里仅匹配半角短破折号自然无法命中目标内容。

可用解决方案

使用兼容多类型破折号的正则即可覆盖场景,同时可适配破折号两侧可能存在的多空格、制表符等空白内容:

item = item.replace(/(\d)\s*[-\u2013\u2014]\s*(\d)/g, '$1-$2');

正则规则说明

  • (\d):匹配破折号左侧的数字,捕获为分组1
  • \s*:匹配0个或多个空白字符,兼容单空格、多空格、制表符等场景
  • [-\u2013\u2014]:匹配三种常见破折号:普通半角短横-、en dash–(U+2013,Excel默认转换的长破折号类型)、em dash—(U+2014,全角长破折号)
  • (\d):匹配破折号右侧的数字,捕获为分组2
  • 替换结果$1-$2:将捕获的两个数字用标准半角短横直接连接,移除中间所有空白和原破折号

效果验证

  • 输入10 - 89 - 90 → 输出10-89-90,符合预期
  • 输入A - Z → 两侧无数字不匹配,保持原格式
  • 输入90 - older → 右侧为非数字不匹配,保持原格式
  • 输入123 – 456(Excel转换后的长破折号版本)→ 输出123-456,兼容生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:06:01