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

如何将PHP重复字符剔除正则迁移至JavaScript并实现高效运行

JavaScript 实现单词内连续重复字符去重(保留全重复单词)

问题分析

你原有的PHP正则用到了\K(重置匹配位置)和预查内的反向引用,这些语法在JavaScript正则中不支持,所以无法直接移植。需求核心是:按空格分割的单词中,仅去除非全重复单词内部的连续重复字符,全重复单词(如xxx)保持原样。

高效解决方案

以下是兼顾可读性和性能的实现,适合处理千字符级字符串:

function deduplicateChars(str) {
  return str.replace(/\b[a-z]+\b/g, word => {
    // 快速判断单词是否由单一字符重复组成
    if (/^([a-z])\1+$/.test(word)) {
      return word;
    }
    // 移除单词内连续重复的字符
    return word.replace(/(.)\1+/g, '$1');
  });
}

测试验证

// 示例1
console.log(deduplicateChars('aaa baaab xxx')); // 输出:"aaa bab xxx"
// 示例2
console.log(deduplicateChars('ahhj aaab cc iiik')); // 输出:"ahj ab cc ik"

效率说明

  1. 单词匹配:用\b[a-z]+\b快速定位所有单词,正则引擎的线性扫描效率极高;
  2. 全重复判断:通过^([a-z])\1+$正则直接校验,比手动遍历字符串更快;
  3. 去重操作:(.)\1+匹配连续重复字符,替换为单个字符,是正则引擎优化过的原生操作,性能优于手动循环处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:07:38