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

如何用正则表达式匹配任意字符串的前半部分?

实现字符串前半部分替换为星号的方案

嘿,我懂你想要实现的效果——把字符串除后半部分外的所有字符替换成*对吧?你原来的思路方向是对的,但正则字面量里没法直接插入变量,得换个方式来实现,下面给你两种可行的方案:

方案一:使用RegExp构造函数动态生成正则

正则字面量(/.../)不支持直接嵌入变量,但我们可以用RegExp构造函数结合模板字符串来动态创建正则规则,这样就能把halfStrLength变量传进去了:

const string = "stackoverflow";
const halfStrLength = Math.floor(string.length / 2); 
// 这里用Math.floor处理奇数长度,比如长度13的话,后半部分取6个字符;如果要取7个,换成Math.ceil即可
const regex = new RegExp(`.(?=.{${halfStrLength}})`, 'g');
const maskedString = string.replace(regex, '*');

console.log(maskedString); // 输出*******overflow

方案二:直接用字符串操作(更直观高效)

其实不用正则也能轻松实现,通过字符串重复和截取的组合,代码更易懂,性能也更优:

const string = "stackoverflow";
const halfLength = Math.floor(string.length / 2);
const maskedString = '*'.repeat(string.length - halfLength) + string.slice(halfLength);

console.log(maskedString); // 同样输出*******overflow

小提示

如果字符串长度是奇数,你可以根据需求调整Math.floor为Math.ceil,来决定后半部分保留的字符数:

  • 用Math.floor:后半部分长度为总长度//2(比如长度9,后半部分4个字符)
  • 用Math.ceil:后半部分长度为(总长度+1)//2(比如长度9,后半部分5个字符)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:12:30