我想你需要的是(?= X)Y
>(?= X)匹配X,不消耗它(零宽度)
> Y并匹配Y.
主要问题:X和Y错了,应该是(假设4位数):
X:119 [0-9] | 1 [2-9] [0-9] {2} | [2-9] [0-9] {3}
> 1190-1199,或
> 1200-1999,或
> 2000-9999
Y:1 [0-8] [0-9] {2} | 19 [0-8] [0-9] | 199 [0-2]
> 1000-1899,或
> 1900-1980,或
> 1990-1992
这里有一个测试代码:
// X - return false if number is less than 1190
String X = "119[0-9]|1[2-9][0-9]{2}|[2-9][0-9]{3}";
// Y - return false if number is greater than 1992.
String Y = "1[0-8][0-9]{2}|19[0-8][0-9]|199[0-2]";
String pattern = "(?=" + X + ")" + Y;
String values = "1000 1100 1180 1189 1190 1191 1199 1200 1290 1900 1980 1989 " +
"1990 1991 1992 1993 1999 2000 3000 2991 9999";
for (String string : values.split(" ")) {
System.out.printf("\"%s\" %s%n", string, string.matches(pattern));
}
5898

被折叠的 条评论
为什么被折叠?



