我有两种组合:
用于检查1000的多个^[1-9]+[0-9]*000$
。
用于检查大于25000的值^\\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的倍数。
是否可以通过一个正则表达式来实现这两种情况?
答案 0 :(得分:2)
^(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
- 最后添加三个零以获得1000个可分割性答案 1 :(得分:2)
答案 2 :(得分:2)
显然任何以000结尾的字符串都是1000的倍数,所以给定一个字符串X000,让我们只担心X.
[1-9]\d\d\d*
),则X000> = 100000> 25000 [3-9]\d
),然后X000> = 30000> 25000 2[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
答案 3 :(得分:0)
使用任何数字范围的正则表达式生成器 在开放范围的范围内,只需使用1加0等于数字的数量 较低的范围再加上两个。
对于你的情况,它将是25到1000给出正则表达式
(?:2[5-9]|[3-9]\d|[1-9]\d{2}|1000)
。
这给出了独特的交替片段。
(?:
2 [5-9]
| [3-9] \d
| [1-9] \d{2}
| 1000
)
剥离1000,然后在最大数量的\ d'上添加空心结尾 每次都有效。然后只需要处理你想要的数十万等等。
(?:
2 [5-9]
| [3-9] \d
| [1-9] \d{2,}
)
000