如何匹配1.1.7以后的版本名? (或我想要的任何版本)

How to match version name later than 1.1.7? (or any version that I want)

我正在使用 Firebase Remote Config 并且在我当前的设置下,使配置仅发布给具有正确版本的用户的唯一方法是使用正则表达式。

我正在寻找匹配 A.B.C

之后发布的任何版本的正则表达式

因此,如果新版本是 x.y.z,则必须满足以下条件才能匹配:

(x > A) 或 {(x = A) 和 [(y > B) 或 ((y = B) 和 (z > C))]}

实数示例:

匹配任何等于或高于 1.1.7 的版本:

匹配:

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

我试过这个正则表达式:^(([2-9]|[0-9]{2,}).*|1\.(([0-9]{2,}).*|[1-9]\.([0-9]{3,}|[0-9]{2,}|[7-9]))) 但它不匹配 1.2.0

您可以试试这个正则表达式:

^([2-9]|1\d|1\.([2-9]|1\d|1\.([7-9]|\d\d)))

演示 here

你可以使用

^(?:1\.(?:1\.(?:[789]|[1-9]\d+)|(?:[1-9]\d+|[2-9])\.\d+)|(?:[1-9]\d+|[2-9])\.\d+\.\d+)$

Regex demo

模式匹配:

  • ^ 字符串开头
  • (?:非捕获组
    • 1\. 匹配 1.
    • (?:非捕获组
      • 1\. 匹配 1.
      • (?:[789]|[1-9]\d+) 匹配 7 8 9 或 10+
      • |
      • (?:[1-9]\d+|[2-9]) 10+ 或 2-9
      • \.\d+匹配.和1+个数字0-9
    • )关闭非捕获组
    • |
    • (?:非捕获组
      • [1-9]\d+10+
      • |
      • [2-9] 匹配 2-9
    • )关闭非捕获组
    • \.\d+\.\d+匹配.1+位.1+位
  • )关闭外部非捕获组
  • $ 字符串结束