invoke
解析一个版本号, 将会返回一个 SemVersion, 如果发生解析错误将会抛出一个 IllegalArgumentException 或者 NumberFormatException
对于版本号的组成, 有以下规定:
必须包含主版本号和次版本号
存在 先行版本号 的时候 先行版本号 不能为空
存在 元数据 的时候 元数据 不能为空
核心版本号只允许
x.y
和x.y.z
的存在1.0-RC
是合法的1.0.0-RC
也是合法的, 与1.0-RC
一样1.0.0.0-RC
是不合法的, 将会抛出一个 IllegalArgumentException
注意情况:
第一个
+
之后的所有内容全部识别为元数据1.0+METADATA-M4
, metadata="METADATA-M4"如果不确定版本号是否合法, 可以使用 regex101.com 进行检查
此实现使用的正则表达式为
^(0|[1-9]\d*)\.(0|[1-9]\d*)(?:\.(0|[1-9]\d*))?(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$