正则表达式 匹配 数字 范围
今天要写一个正则表达式,来做前端校验。主要部分是 用来匹配1~4095的数字。
?
现在就以这个为例,说一下表示范围的正则怎么写。
?
1、只有1~3位数字,即数字范围:1~999。
?
分析:第1个数字是1~9,后面的可以出现0~9的数字,最多2位。于是,就有了下面的字符串:
?
"[1-9]\\d{0,2}+"
?
2、4位数的,要小于等于4095,即数字范围:1000~4095。
?
分析:第1位,可以是1~4;第2位,依赖第1位,当第1位是4的时候,第2位只能是0;同理,第3位依赖第2位;第4位依赖第3位。所以,就有了以下代码:
?
"[1-4]\\d(?<!4[1-9])\\d\\d(?<!409[6-9])"
?
这里用的是非捕获(?<!X)X,通过零宽度的负 lookbehind 来实现的。
?
完整代码如下:
?
?
??
测试结果:
?
?
4094 true4095 true4096 false5000 false4000 true900 true10 true9 true0 false1 true-1 falsea false@ false??
?