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

Java中使用正则表达式验证数字能否被5整除的问题排查

问题解决:用正则判断数字能否被5整除

你的代码问题出在两个地方:

  1. Java的String.matches()方法要求正则匹配整个字符串,你写的[0|5]$只检查结尾字符,但没有允许字符串前面存在其他数字,所以只有单个字符的0或5会匹配,多位数全部失败。
  2. 字符类[0|5]里的|是多余的,它会被当作普通字符匹配(相当于允许匹配0、|、5),正确写法是[05],用来匹配0或5。

修正后的代码如下:

public class MyClass {
    public static void main(String args[]) {
      
     String[] digits = {"20", "25", "000", "001", "5123456789"};
        for (String s : digits){
            System.out.println("\"" + s + "\"" + " -> " + proof(s));
        }
    
    }
        
    public static boolean proof(String s){
        return s.matches("^\\d*[05]$"); // 修正后的正则表达式
    }
}

正则说明

  • ^:匹配字符串开头
  • \\d*:匹配任意数量(包括0个)的数字
  • [05]:匹配数字0或5
  • $:匹配字符串结尾

这个正则会强制要求整个字符串由数字组成,且最后一位是0或5,完全符合能被5整除的数字格式。如果需要支持负号(比如-20),可以把正则改成^-?\\d*[05]$。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:55:35