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}$
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
我需要验证一个带 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}$
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