Firefox 旧版版本号
一个版本字符串由一个或多个版本部分组成,各部分之间用点号分隔。
每个版本部分都解析为四个部分的序列:<number-a><string-b><number-c><string-d>。每个部分都是可选的。数字是十进制整数(可以是负数),字符串是非数字的 ASCII 字符。
以下是一些有效版本部分的示例
0(如1.0):<number-a>=05a(如1.5a):<number-a>=5,<string-b>=a5pre4(如3.5pre4):<number-a>=5,<string-b>=pre,<number-c>=4*(如1.0.*):<string-b>=*
为了向后兼容和提高可读性,会应用一些特殊的解析规则。
- 如果版本部分是单个星号,则将其解释为一个无限大的数字:
1.5.0.*与1.5.0.(infinity)相同。 - 如果 string-b 是加号,则 number-a 会递增,以兼容 Firefox 1.0.x 版本格式:
1.0+与1.1pre相同。
将版本部分拆分为字符串和数字序列的目的是,在比较版本部分时,数字部分按数字大小比较,例如,“1.0pre1” < '1.0pre10',而字符串则按字节序比较。有关版本如何比较的详细信息,请参阅下一节。
从 Firefox 108 开始,使用此版本字符串的 Web 扩展在安装时会触发警告。
版本比较
在比较两个版本字符串时,会从左到右比较它们的版本部分。空版本部分或缺失版本部分等同于 0。
如果在某个点上,一个版本字符串的某个版本部分大于另一个版本字符串的相应版本部分,则第一个版本字符串大于另一个。
否则,这两个版本字符串相等。由于缺失的版本部分被视为 0,因此这些版本字符串是相等的:1、1.0、1.0.、1.0.0,甚至 1.0..。
比较版本部分
版本部分也是从左到右比较的;A 部分和 C 部分按数字大小比较,而 B 部分和 D 部分按字节序比较。存在的字符串部分始终小于不存在的字符串部分(1.6a 小于 1.6)。
示例
1.-1 < 1 == 1. == 1.0 == 1.0.0 < 1.1a < 1.1aa < 1.1ab < 1.1b < 1.1c < 1.1pre == 1.1pre0 == 1.0+ < 1.1pre1a < 1.1pre1aa < 1.1pre1b < 1.1pre1 < 1.1pre2 < 1.1pre10 < 1.1.-1 < 1.1 == 1.1.0 == 1.1.00 < 1.10 < 1.* < 1.*.1 < 2.0