我有两个组合:
^[1-9]+[0-9]*000$
。^\\d{6,}$|^[3-9]\\d{4}$|^2[5-9]\\d{3}$
。当我试图将两个正则表达式和正的查找操作符组合起来时,
^(?=[1-9]+[0-9]*000)(?=\\d{6,}$|^[3-9]\\d{4}$|^2[5-9]\\d{3})*$
它的取值为25000100,35000100,它不是1000的倍数。
是否有可能通过一个正则表达式实现这两种场景?
发布于 2016-01-22 17:53:05
发布于 2016-01-22 17:44:40
^(2[5-9]\d*|[3-9]\d+|[12]\d{2,})000$
这样做的目的是:
2[5-9]\d*
- 25-29和可选数字之后是>= 25。[3-9]\d+
- 3-9后面有一个或多个数字,为> 25。[12]\d{2,}
-1或2,在此之后有两个或更多位数是> 25。000
-在末尾添加3个0作为1000个可分性发布于 2016-01-22 17:59:02
显然,任何以1000结尾的字符串都是1000的倍数,因此给定一个字符串X000,我们只需考虑X。
[1-9]\d\d\d*
匹配),则X000 >= 100000 > 25000[3-9]\d
),那么X000 >= 30000 > 250002[5-9]
),那么X000 >= 25000 = 25000。任何其他可能的X都会导致一个较小的数目(或一些不是数字的东西),所以将它们放在一个组([1-9]\d\d\d*|[3-9]\d|2[5-9])
中作为前缀。
([1-9]\d\d\d*|[3-9]\d|2[5-9])000
https://stackoverflow.com/questions/34952840
复制相似问题