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

求Java中匹配含重复两位数的7位数字的正则表达式

Java正则表达式:匹配7位且包含重复两位数的数字

没问题,这就给你搞定Java环境下的正则需求,直接上解决方案和详细解释:

核心正则表达式

针对你的需求,符合要求的正则表达式是:

^(?=.*(\d{2}).*\1)\d{7}$

在Java代码中使用时,需要对反斜杠进行转义,所以字符串形式为:

String regex = "^(?=.*(\\d{2}).*\\1)\\d{7}$";

正则拆解说明

逐个拆解正则的各个部分,帮你理解为什么这么写:

  • ^ 和 $:锚定字符串的开头和结尾,确保匹配的是正好7位数字,不会出现长度不符或者前后有多余字符的情况。
  • (?=.*(\d{2}).*\1):这是一个正向预查(零宽断言),用来检测字符串中是否存在重复出现的两位数:
    • (\d{2}):捕获一个由两位数字组成的分组,比如"34"、"77"等。
    • .*:匹配任意数量(包括0个)的数字,用来跳过两个重复两位数之间的其他字符。
    • \1:引用之前捕获的那个两位数分组,确保这个两位数在字符串中至少再次出现一次。
  • \d{7}:直接匹配正好7位数字,和首尾锚点配合保证长度合规。

测试示例

根据你给出的示例数字,这些都会被成功匹配:

  • 3433434(包含重复的"34")
  • 6776767(包含重复的"67")
  • 9000999(包含重复的"00"和"99")

而像1234567(无重复两位数)、121234(长度不足7位)这类数字则会匹配失败。

Java代码示例

这里给你一个完整的Java测试代码,直接就能运行验证:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class DuplicateTwoDigitMatcher {
    public static void main(String[] args) {
        // 转义后的正则字符串
        String regex = "^(?=.*(\\d{2}).*\\1)\\d{7}$";
        Pattern pattern = Pattern.compile(regex);
        
        // 测试用例集合
        String[] testNumbers = {
            "3433434", "6776767", "9000999", // 符合要求的示例
            "1234567", "121234", "1122334"   // 不符合要求的示例
        };
        
        for (String number : testNumbers) {
            Matcher matcher = pattern.matcher(number);
            System.out.printf("数字 %s 匹配结果:%b%n", number, matcher.matches());
        }
    }
}

运行这段代码后,前三个数字会输出true,后三个输出false,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:24:44