我想验证输入的值是否是一个数字范围,并检查EXTjs中的第一个数字是否低于第二个数字
我使用这个正则表达式:/d+-d+?$/但我不知道检查第一个数字是否低于第二个
这是不是你应该这样做!但是我想让我的大脑散个步,所以我开始思考如何做到这一点,并说明用regex做这件事是多么愚蠢。
第一个数字最多只能有两位数
^(d-[1-9]d+|1d-[2-9]d+|2d-[3-9]d+|3d-[4-9]d+|4d-[5-9]d+|5d-[6-9]d+|6d-[7-9]d+|7d-[8-9]d+|8d-9d+|0-d|1-[2-9]|2-[3-9]|3-[4-9]|4-[5-9]|5-[6-9]|6-[7-9]|7-[8-9]|8-9|d0-dd|d1-d[2-9]|d2-d[3-9]|d3-d[4-9]|d4-d[5-9]|d5-d[6-9]|d6-d[7-9]|d7-d[8-9]|d8-d9)$
请参阅regex101。
你开始明白为什么这不是正确的方法了吗?无论如何,它分为三个部分:
- 测试左边的十位数字与右边更高的十位数字(或更多)
- 测试个位数(左低于右)
- 如果两个都是相同的十位,测试个位数对彼此
注意!它是手写的,没有经过测试,所以它可能包含错误和可能可以进一步优化。
对于个位数是可行的:
^(0-d|1-[2-9]|2-[3-9]|3-[4-9]|4-[5-9]|5-[6-9]|6-[7-9]|7-[8-9]|8-9)$