java中and与_java – 正则表达式中的AND运算符

我想你需要的是(?= 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));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值