如何编写用于Firebase Remote Config匹配高于指定版本号的正则?
大于等于指定三位版本号的正则实现方案(适配Firebase Remote Config场景)
匹配≥1.1.7版本的正确正则
^(?:[2-9]|\d{2,})\.(?:\d+)\.(?:\d+)$|^1\.(?:[2-9]|\d{2,})\.(?:\d+)$|^1\.1\.(?:[7-9]|\d{2,})$
正则逻辑拆解
完全匹配你要求的版本号判断规则,分三个分支覆盖所有合法场景:
- 第一个分支
^(?:[2-9]|\d{2,})\.(?:\d+)\.(?:\d+)$:匹配主版本号大于1的所有版本,覆盖2.0.0、10.3.5这类场景 - 第二个分支
^1\.(?:[2-9]|\d{2,})\.(?:\d+)$:匹配主版本号等于1、次版本号大于1的所有版本,覆盖1.2.0、1.10.0这类场景,解决了你原有正则无法匹配1.2.0的问题 - 第三个分支
^1\.1\.(?:[7-9]|\d{2,})$:匹配主版本等于1、次版本等于1、修订号≥7的版本,覆盖1.1.7、1.1.69这类场景
匹配结果验证
可正常命中的版本
- 1.1.7
- 1.1.8
- 1.1.69
- 1.2.0
- 1.10.0
- 2.0.0
不会命中的版本
- 1.1.6
- 1.0.34
- 0.5.0
- 0.77.0
通用版本生成规则
如果需要适配其他基准版本A.B.C,按照以下公式替换对应字段即可:
^(?:{A+1到9的数字范围}|\d{{2,}})\.(?:\d+)\.(?:\d+)$|^{A}\.(?:{B+1到9的数字范围}|\d{{2,}})\.(?:\d+)$|^{A}\.{B}\.(?:{C到9的数字范围}|\d{{2,}})$
比如基准版本为2.3.5时,生成的正则为:
^(?:[3-9]|\d{2,})\.(?:\d+)\.(?:\d+)$|^2\.(?:[4-9]|\d{2,})\.(?:\d+)$|^2\.3\.(?:[5-9]|\d{2,})$
如果你的版本号带后缀(如1.1.7-beta),可以在每个分支的结尾加.*适配后缀场景。
内容的提问来源于stack exchange,提问作者Trong Nguyen
相关产品推荐
相关产品推荐

