在尝试使用正则匹配 12-128 时,发现可以匹配到129,如题。
/ 192.168.0.(12[0-8]|1[0-1][0-9]|[2-9][0-9]|1[2-9]) /
匹配 129 时返回true。判断 255 也会匹配到前两位 25。
如何能避免此类情况出现?
或者是用其他写法?
3 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
这种需求建议就不要用正则实现,直接用正则粗略过滤是个正整数,然后再转成整数判断一下大小就行了,反正js在前端执行,这个速度又不会太慢,还容易维护,你觉得你写个这个正则后面你自己还能看得懂吗?
EDIT,没细看你的需求,你这个需求完全不应该用正则去实现,而应该直接用ipv4的解析类库去搞,直接限定ip段岂不美哉?
森栏
TA贡献1810条经验 获得超5个赞
对数字区间通常是分段写正则,例如12-128,分成:12-19, 20-99, 100-119,120-128:/^((1[2-9])|([2-9][0-9])|(1[01][0-9])|(12[0-8]))$/
对于更复杂的,还是直接提取数字,然后if/else判断吧,简单的正则+简单的判断总比复杂的正则好。
- 3 回答
- 0 关注
- 626 浏览
添加回答
举报
0/150
提交
取消