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

如何使用正则替换连续2个及以上空格,每个空格对应替换为指定字符

原代码问题分析

你编写的myStr.replace(/ +{2,}/g, '-')存在两处问题:

  1. 正则语法错误:+本身表示匹配前一个字符1次及以上,叠加{2,}属于非法的量词组合,就算修正为/ {2,}/g,逻辑也存在问题
  2. 替换逻辑不符:修正语法后的正则会将一整段连续的空格整体替换为1个-,无法做到每个空格对应替换为1个-的效果

正确实现方案

方案1:替换回调实现(兼容性最优,推荐使用)

利用replace方法的回调参数,匹配到连续2个及以上的空格后,根据匹配到的空格长度生成等长的-进行替换:

const myStr = "I love   to eat    cake"
const result = myStr.replace(/ {2,}/g, match => '-'.repeat(match.length))
// 输出结果:I love---to eat----cake

方案2:零宽断言实现

通过零宽断言直接匹配所有属于连续空格序列中的单个空格,逐个替换为-:

const result = myStr.replace(/(?<= ) | (?= )/g, '-')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:15:04