匹配数大于指定十进制数的正则表达式

时间:2013-08-05 07:59:07

标签: regex string-matching

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

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

但它甚至匹配'4'并且不匹配'5.1','6.1'等。

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

2 个答案:

答案 0 :(得分:3)

试试这个:

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

匹配4.1以上的所有版本

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

答案 1 :(得分: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]+)?)$

您可以对其进行测试here