先区分检查模式
规范化只检查写法,排序按版本优先级排列,匹配则保留输入顺序并评估约束。相同大小的版本在排序后仍保持原次序,非法行移到末尾,原物理行号不会被重新编号。
开发者工具
每行输入一个版本,选择规范化、排序或约束匹配,查看逐行报告。
输入内容或载入示例以开始。
输入仅在当前浏览器中处理,不会发送到服务器。
逗号表示 AND;空约束没有版本边界。支持 ~= == != <= >= < > ===,.* 仅可用于 == 或 != 的发布段前缀。
上限:1,000 个非空行;单行 256、约束 2,048、列表 100,000 个 UTF-16 单元。空行跳过,原输入不改写。
正在检查当前候选…
PEP 440 版本测试适合排查“版本看起来更新,为什么仍不满足依赖条件”。合法性、版本大小和候选资格是三个不同的问题,不能只看字符串中的数字,也不能把 npm 的匹配结果直接套用过来。
Python 版本比较允许把 1.0 与 1.0.0 视为等值,却仍会保留规范输出中的段数。准备修改依赖范围前,可以先用这份列表验证 epoch、dev、post 和本地标签究竟影响了哪一步。
PEP 440 版本测试会把 v01.1 规范化为 1.1,同时保留原文。展开单行即可看到各个版本段,快速找出大小写、数字前导零或分隔符变化,不必覆盖原输入再回头寻找差异。
自动策略先检查整个候选集合。只要存在符合全部条件的非预发布版本,就优先保留这类候选;没有时才回退到符合条件的预发布。增加一条正式版,可能改变其他行的匹配结论。
规范化只检查写法,排序按版本优先级排列,匹配则保留输入顺序并评估约束。相同大小的版本在排序后仍保持原次序,非法行移到末尾,原物理行号不会被重新编号。
删除一个符合条件的正式版,再观察预发布是否回退进入结果。选择“包含”也不会改变大小关系:1.0rc1 仍小于 1.0,因此不能通过 >=1.0。
自动运行等待 350 毫秒;关闭后可用按钮或 Ctrl/Cmd+Enter。输入或参数一变,旧报告立即禁止导出。示例和清空先给替换预览,应用后可以一次撤销,恢复输入与报告。
识别 v 前缀、前导零、alpha/beta/preview 等别名以及本地标签分隔符。规范结果不会随意补成三段版本号;1.0.0 仍保留三段,比较时才按规则处理末尾零。
先比较 epoch,再比较发布数字段,随后处理开发版、预发布、正式版和后发布。本地标签中的纯数字段按整数比较,大于 JavaScript 安全整数范围的数字也不会被舍入。
支持 ~=、==、!=、<=、>=、<、>、===,逗号表示全部条件同时成立。==1.4.* 和 !=1.4.* 支持发布段前缀,空白行跳过但候选的原行号与重复值会保留。
非法版本只影响所在行;约束语法错误会阻止本轮计算,避免被误读为全部不匹配。界面每次增加展示 50 条,JSON 导出始终包含全部已处理结果、原值与稳定错误代码。
它把下界和发布段前缀组合起来。~=1.4 相当于从 1.4 开始且限定在 1.* 内,~=1.4.0 则限定在 1.4.* 内。~=1 只有一个数字段,不是合法条件;是否接纳预发布还要单独判断。
自动过滤会在没有合格非预发布候选时回退。加入满足条件的正式版或后发布版本后,整个集合的选择依据变了。“包含”可查看所有满足数值条件的候选;“排除”则始终拒绝预发布。
公开部分相同时,本地版本排在公开版本之后,例如 1.0 < 1.0+abc。本地纯数字段排在文字段之后;规范化后等值的候选保留输入顺序。这与 SemVer 构建元数据不影响大小的规则不同。
== 和 != 可以,例如 ==1.0+linux.1。>=1.0+linux.1 或 ~=1.0+linux.1 会被拒绝。若只写 ==1.0,则没有要求具体本地构建,因此 1.0+linux.1 也可能满足条件。
可使用 packaging.version.Version 处理符合规范的版本。本页浏览器引擎已用 packaging 26.0 交叉核对。直接比较字符串会把 1.10 与 1.9 排错;其他生态的解析器也未必识别 epoch 和 post。
不可以。==1.0.* 是发布段前缀,而 ==1.0rc1.* 与 ==1.0.post1.* 都非法。需要限制这些后缀时应使用精确相等或普通上下界;前缀条件本身也不会绕过预发布策略。
版本结果不符合预期?