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

如何用JavaScript正则替换分隔符间的重复字符串?

解决方案

要实现将&和RGH之间的每个moo;替换为A,且替换次数与原出现次数完全一致,可以利用JavaScript的String.replace()方法结合回调函数完成,单个正则表达式即可满足需求:

var a = "Cow says &moo;RGH but also &moo;moo;moo;RGH and &moo;moo;moo;moo;moo;RGH but it doesn't moo; bah!";
a = a.replace(/&(moo;)+RGH/g, function(match) {
    // 截取&和RGH之间的内容,计算moo;的出现次数
    const mooCount = match.substring(1, match.length - 3).split('moo;').length - 1;
    // 生成对应数量的A,拼接&和RGH作为替换结果
    return `&${'A'.repeat(mooCount)}RGH`;
});
console.log(a);

代码说明

  1. 正则表达式:/&(moo;)+RGH/g 全局匹配所有以&开头、RGH结尾,且中间包含至少一个moo;的片段。
  2. 回调函数:每次匹配到目标片段时执行:
    • 通过substring截取&之后、RGH之前的核心内容;
    • 用split('moo;')分割字符串,数组长度减1即为moo;的出现次数;
    • 用'A'.repeat(mooCount)生成对应数量的A,再拼接首尾的&和RGH完成替换。

之前尝试无效的原因

你之前的正则写法都是直接将整个匹配片段替换为单个A,没有根据moo;的实际出现次数动态生成对应数量的字符,因此无法达成需求。而回调函数可以灵活计算次数并生成对应内容,完美匹配你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:54:57