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

如何使用Java正则表达式判断字符串中字符i的出现次数是否为偶数

正确正则实现

要判断字符串中字符i的出现次数是否为偶数,可直接使用如下正则表达式:

^([^i]*i[^i]*i)*[^i]*$

正则逻辑说明

  • ^ 匹配字符串的起始位置
  • ([^i]*i[^i]*i)* 匹配0组或多组「任意个非i字符 + 1个i + 任意个非i字符 + 1个i」的结构,每组恰好包含2个i,匹配0组时对应i出现次数为0的场景
  • [^i]* 匹配字符串末尾剩余的所有非i字符
  • $ 匹配字符串的结束位置

Java调用示例

直接使用String.matches()方法即可完成判断:

public class CheckICount {
    public static void main(String[] args) {
        String sample = "iuhuihuijdjoiuio";
        boolean isEven = sample.matches("^([^i]*i[^i]*i)*[^i]*$");
        // 示例字符串i出现5次,此处isEven结果为false
        System.out.println(isEven);
    }
}

原正则的问题

你编写的(i*){2})*存在两个明显问题:

  1. 语法错误:多了一个多余的右括号,直接运行会抛出正则语法异常
  2. 逻辑错误:i*可匹配0个或多个i,重复两次的规则完全无法约束i的总出现次数为偶数

扩展说明

如果需要同时匹配大小写的i,可在正则开头添加不区分大小写的标记(?i),修改为:

(?i)^([^i]*i[^i]*i)*[^i]*$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:04