Java中使用正则表达式验证数字能否被5整除的问题排查
问题解决:用正则判断数字能否被5整除
你的代码问题出在两个地方:
- Java的
String.matches()方法要求正则匹配整个字符串,你写的[0|5]$只检查结尾字符,但没有允许字符串前面存在其他数字,所以只有单个字符的0或5会匹配,多位数全部失败。 - 字符类
[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
相关产品推荐
相关产品推荐

