数字比较运算符 (v1.1.2+)
版本: v1.1.2+
适用类型: number, integer
📋 快速概览
✨ 特性
- ✅ 支持 5 种比较运算符
- ✅ 支持小数(如
number:>0.5) - ✅ 支持负数(如
number:>-10) - ✅ 支持必填标记(如
number:>=18!) - ✅ 适用于
number和integer类型 - ✅ 完全向后兼容原有范围语法
🚀 基础用法
大于 (>)
语法: number:>value
JSON Schema: { exclusiveMinimum: value }
说明: 值必须大于指定值(不包括边界值本身)
大于等于 (>=)
语法: number:>=value
JSON Schema: { minimum: value }
说明: 值必须大于等于指定值(包括边界值)
小于 (<)
语法: number:<value
JSON Schema: { exclusiveMaximum: value }
说明: 值必须小于指定值(不包括边界值)
小于等于 (<=)
语法: number:<=value
JSON Schema: { maximum: value }
说明: 值必须小于等于指定值(包括边界值)
等于 (=)
语法: number:=value
JSON Schema: { enum: [value] }
说明: 值必须等于指定值
📊 对比:比较运算符 vs 范围语法
🎯 实际应用场景
场景 1:用户注册 - 年龄限制
场景 2:电商系统 - 价格验证
场景 3:考试系统 - 评分
场景 4:温度监控 - 范围限制
场景 5:游戏系统 - 等级验证
⚙️ 技术细节
JSON Schema 映射
integer 类型支持
所有比较运算符同样适用于 integer 类型:
🔄 向后兼容性
所有原有语法保持不变,无破坏性变更:
❓ 常见问题
Q1: 为什么需要比较运算符?范围语法不够用吗?
A: 范围语法无法表达"不包括边界值"的需求:
number:>0表示大于0(不包括0)number:<100表示小于100(不包括100)- 这些用范围语法无法表达
Q2: number:=100 和 number:100 有什么区别?
A:
number:=100→{ enum: [100] },精确等于100number:100→{ maximum: 100 },小于等于100
Q3: 能否组合多个比较运算符?
A: 当前版本不支持直接组合(如 number:>0<100)。建议:
- 使用范围语法:
number:0-100(包括边界) - 或分别验证两个字段
Q4: 支持哪些数值?
A:
- ✅ 正整数:
number:>0,number:>=1 - ✅ 负整数:
number:>-10,number:<-5 - ✅ 小数:
number:>0.5,number:<=99.99 - ✅ 零:
number:>=0,number:<=0
📚 相关文档
对应示例文件
示例入口: number-operators.ts
说明: 覆盖 >=、<、<=、= 和整数比较运算符的成功/失败路径,便于直接观察边界行为。
版本: v1.1.2+
更新时间: 2026-05-08