4

我想匹配大于 4.1 的版本号。我为此构建了以下正则表达式

(([4-9]+\d*(\.((\*)|([2-9]+(\.((\*)|([0-9]+)))?)))?))

但它甚至匹配“4”,不匹配“5.1”、“6.1”等。

如何构造这样的正则表达式?请帮忙。

4

2 回答 2

4

尝试这个:

([4-9]\.[2-9]\d*|[4-9]\.\d\d+|[5-9](\.\d+)?|\d\d+(\.\d+)?)

匹配 4.1 以上的所有版本

编辑:修复了没有点的版本

于 2013-08-05T08:15:21.380 回答
1

你可以试试这个:

(4\.(1[0-9]*[1-9]|[2-9][0-9]*)|([5-9]|[1-9][0-9]+)(\.[0-9]+)?)

这将匹配:

  • 4.其次是:

    • 1后跟零个或多个0-9和一个或多个1-9
    • 2-9后跟零个或多个0-9

    或者

  • 要么5-91-9后跟一个或多个0-9
  • 后跟一个可选的小数点和零个或多个0-9

根据如何使用它,您可能需要考虑在您的模式周围添加开始/结束锚点,以便不允许其他字符:

^(4\.(1[0-9]*[1-9]|[2-9][0-9]*)|([5-9]|[1-9][0-9]+)(\.[0-9]+)?)$

你可以在这里测试它。

于 2013-08-05T08:08:26.013 回答