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

如何用正则表达式替换指定位置后的所有字符为占位符(保持长度一致)

解决方案

要实现保留前N个字符(比如第3位)、将后续所有字符替换为占位符且保持原长度不变的需求,你可以使用反向肯定预查精准匹配目标字符:

正确的正则表达式

/(?<=^.{3})./g

替换示例

以你的输入字符串'hello there'为例,执行替换操作:

const input = 'hello there';
const placeholder = '_';
const result = input.replace(/(?<=^.{3})./g, placeholder);
console.log(result); // 输出:'hel________'

正则逻辑解释

  • (?<=^.{3}):反向肯定预查,确保当前匹配的字符前面已经有字符串开头的3个任意字符(也就是从第4个字符开始匹配)
  • .:匹配任意单个字符(若需匹配换行符,可添加s修饰符:/(?<=^.{3})./gs)
  • g:全局修饰符,保证所有符合条件的字符都会被替换

边界情况处理

如果输入字符串长度≤3,该正则不会匹配任何字符,直接返回原字符串,无需额外判断。

原有正则问题分析

你之前写的/.(?=.{0,2}$)/g是正向预查,它匹配的是后面只剩0-2个字符的位置,也就是字符串的最后3个字符,所以才会得到'hello th___'的结果,和需求逻辑正好相反。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:50:34