assert(*tryParseVersion("0.0.0") == Version(0,0,0)); assert(*tryParseVersion("0.0.1") == Version(0,0,1)); assert(*tryParseVersion("0.1.1") == Version(0,1,1)); assert(*tryParseVersion("1.1.1") == Version(1,1,1)); assert(!tryParseVersion("")); assert(!tryParseVersion("").isValue); assert(!tryParseVersion("_").isValue); assert(!tryParseVersion("").isValue); assert(!tryParseVersion("1").isValue); assert(!tryParseVersion("_").isValue); assert(!tryParseVersion("1.").isValue); assert(!tryParseVersion("1._").isValue); assert(!tryParseVersion("1.1.").isValue); assert(!tryParseVersion("1.1").isValue); assert(!tryParseVersion("1.1_1").isValue); assert(!tryParseVersion("1-1-1").isValue); assert(!tryParseVersion("_._.__").isValue); assert(!tryParseVersion("1._.__").isValue); assert(!tryParseVersion("1.1.__").isValue); assert(*tryParseVersion("v1.1.1") == Version(1,1,1)); assert(*tryParseVersion("=1.1.1") == Version(1,1,1));
Parse s as a semantic version number.
Semantic versions are usually represented as string as: MAJOR[.MINOR[.PATCH]][-PRERELEASE][+BUILD].
For ease of use, a leading v or a leading = are also accepted.