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

JavaScript如何使用字符串索引字符实现全局正则替换

错误原因

  • /text[0]/gi 属于正则字面量语法,其中的text[0]会被识别为纯文本匹配规则,不会解析为JS变量,因此无法匹配对应字符
  • text[0]/gi会被JS引擎识别为除法运算表达式,等价于(text[0]) / (gi),由于不存在gi变量,因此抛出未定义错误

解决方案

如果需要使用动态变量构造正则,要使用RegExp构造函数实现:第一个参数传入匹配规则的字符串形式,第二个参数传入正则修饰符。

修正后的替换代码

let text = "aAabbbacccaaade";
// 动态构造正则
const charReg = new RegExp(text[0], 'gi');
text = text.replace(charReg, "");

完整功能实现(符合你的原始逻辑)

function countCaseInsensitiveUniqueChars(str) {
  let count = 0;
  let processingStr = str;
  while (processingStr.length) {
    const currentChar = processingStr[0];
    processingStr = processingStr.replace(new RegExp(currentChar, 'gi'), '');
    count++;
  }
  return count;
}

// 测试代码
console.log(countCaseInsensitiveUniqueChars("aAabbbacccaaade")); // 输出 5

可选简化方案

可以直接将字符串统一转大小写后用Set去重,一行即可得到结果:

const uniqueCount = new Set("aAabbbacccaaade".toLowerCase()).size;
// 输出结果同样为5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:36:01