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 個以上0-9と 1 個以上が続く1-9
    • 2-9ゼロ以上が続く0-9

    また

  • または1 つ5-9以上1-9が続く0-9
  • その後に任意の小数点と 0 個以上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 に答える