You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用正则表达式替换重复出现的特定序列?

如何使用正则表达式替换重复出现的特定序列?

嘿,我一眼就瞅出问题所在啦!你写的正则/(:0000:){2,}/g其实是在找连续两次及以上的:0000:(也就是像:0000::0000:这种格式),但你的输入字符串里是:0000:0000:——中间的0000之间只有一个冒号,所以这个正则根本匹配不到它!

咱们调整下思路,分两步来处理你的需求:

第一步:替换2个及以上连续的0000

我们需要匹配「冒号开头,跟着至少两个0000,每个0000后面都带冒号」的结构,对应的正则是/(?::0000){2,}:/g。把这个替换成::,就能把:0000:0000:变成::啦。

第二步:替换单个的:0000:

用正则/(:)0000(:)/g,把它替换成$10$2,这样单个的:0000:就会变成:0:

把这两步结合起来,你的代码就变成这样了:

let str = document.getElementById("input").textContent; 
// 先处理多个连续的0000段
let res = str.replace(/(?::0000){2,}:/g, "::");
// 再处理单个的0000段
res = res.replace(/(:)0000(:)/g, "$10$2");
document.getElementById("output").textContent = res;

测试你的输入字符串2A00:1450:4028:080B:0000:0000:00001111:2005,运行后就能得到你想要的2A00:1450:4028:080B::00001111:2005,而且00001111也不会被误替换,完全符合你的要求~

备注:内容来源于stack exchange,提问作者LWC

火山引擎 最新活动