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

JS正则问题:替换连续少于6次的0,保留6次及以上的0

正则解决方案

需求回顾

将字符串 11110000111100000000111100001111000000 中,连续出现少于6次的0替换为对应数量的点(如连续4个0替换为....),连续6次及以上的0保留。

可行正则及替换逻辑

使用带零宽断言的正则精准匹配符合条件的短0序列,避免误匹配长0串或捕获无关字符:

// 正则表达式
const regex = /(?<=^|1)0{1,5}(?=1|$)/g;
// 替换操作
const originalStr = '11110000111100000000111100001111000000';
const result = originalStr.replace(regex, match => '.'.repeat(match.length));

正则解释

  • (?<=^|1):反向零宽断言,确保匹配的0串前是字符串开头或字符1
  • 0{1,5}:匹配1-5个连续的0(即需要替换的短0序列)
  • (?=1|$):正向零宽断言,确保匹配的0串后是字符1或字符串结尾

这样就能精准定位所有被1(或首尾)包裹的短0序列,不会触及长度≥6的长0串。

为什么之前的正则无效?

  1. 正则/(?!0{6,})0{1,5}/g:会误匹配长0串中的分段0(比如8个0的前5个0,因为其后方剩余的0不足6个,断言(?!0{6,})会成立),导致长0串被错误替换。
  2. 正则/((?:^|1)(?!0{6,})0{1,5})/g:将^|1纳入了捕获组,替换时会连带捕获到的1一起修改,不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:45:49