如何验证版本以接受 4.4+ 但不接受 4.4+.0

How to validate version to accept 4.4+ but not 4.4+.0

我已经编写了正则表达式来接受以下类型的版本

示例:“4.2.2+”、“4.3.*”、“4.2+”

/^([0-9])\.([0-9]+[*]{0,1}[+]?)(?:\.([0-9]+[*]{0,1}[+]?))?$/

上面接受的是所有类型,还接受“4.2+.0”,应该是无效的。我怎样才能避免这种“4.2+.0”的情况。

任何人都可以提供正则表达式来验证以上版本吗?

要匹配至少有一个点和末尾可选 *+ 的示例:

^\d+(?:\.\d+)+(?:\.?[+*])?$
  • ^ 字符串开头
  • \d+ 匹配 1+ 个数字
  • (?:\.\d+)+重复匹配1次或多次.和1+位数字
  • (?:\.?[+*])? 可选地匹配一个可选的点和 *+
  • $ 字符串结束

看到一个regex demo.

要匹配不带点的示例,您可以将重复组的加号更改为星号:

^\d+(?:\.\d+)*(?:\.?[+*])?$

再看一个regex demo

请使用以下正则表达式验证版本 /^\d+((?:.\d+([+]$){0,1})|(.[*]{1,1})){1,2}$/

^ 字符串开始 \d+ 匹配1+位数字

  1. (?:.\d+([+]$))+ 重复匹配 1 次或多次。和 1+ 位数字,如果您要添加 + 然后 $ 字符串结尾。 或者
  2. (?:.?[*])?可选地匹配一个可选的点 * 一次或两次 $ 字符串结尾

Please check here