Java 中的正则表达式模式验证以匹配 2 个小数点

Regex Pattern validation in Java to match 2 decimal points

我需要验证一个带 2 个小数点的数字模式,每个小数点后最多只能包含 2 位数字。它最多只能包含 4 位整数。

例如:它可以插入的最大值是这种格式yyyy.yy.yy

 yyyy - allow without any decimal places
   yyyy.y - allow
   yyyy.y.y - allow

yyyy.yyy.yy - 不允许(因为小数点后 1 位有 3 位数字) yyyy.yy.yyy - 不允许(因为小数点后 2 位有 3 位数)

yyyy.y.yy  - (Allow)
yyyy.yy.y  - (Allow)

yyyy.yy.y -(允许)

粗体部分最多只能输入 4 位数字。

目前如果我使用这个验证^[0-9]{1,4}(\.[0-9]{0,2})?$
此验证适用于此正确。

yyyy.yy - maximum value

但我想验证这个 yyyy.yy.yy。如果我使用 ^[0-9]{1,4}(\.[0-9]{0,2})(\.[0-9]{0,2})?$
为此 yyyy.yy.yy 它不能正常工作。

您的正则表达式包含重复项。您可以将量词添加到第二组。试试这个正则表达式

^\d{1,4}(\.\d{0,2}){0,2}$

Demo

Java 例子

public static void main(String[] args) {
    String[] arr = new String[] {"1234", "1234.1.2", "1234.22.22", "1234.2", "1.2.3", // all match
                                 "5.555.5", "55555", "5.55.555"}; // all don't match

    for(String s : arr) {
        if(s.matches("^\d{1,4}(\.\d{0,2}){0,2}$")) {
            System.out.println(s);
        }
    }
}

输出

1234
1234.1.2
1234.22.22
1234.2
1.2.3