最近我必须解析一个SEMVER字符串。我发现的第一个正则无法处理标签,所以我去了SemVer docs,以了解有关标签的确切规格的更多信息。
我发现官方语义版本2.0.0文档(至少是英文版本)包括一个与ECMA脚本(JavaScript)兼容的编号捕获组的official regex和r),python然后去。
,它甚至具有tests,非常方便!
您可以同时使用它来验证/验证和解析SEMVER字符串:
const versionString = "1.2.3-rc.1";
const [semVer, major, minor, patch, prerelease, buildmetadata] = versionString.match(/^(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-]+)*))?$/) ?? [];
ðââ变量名称应该是自我解释的。如果
semverString
不是有效的SEMVER,则.match()
将返回null
,所有值将为undefined
。
您还有另一种测试/解析SEMVER的方法吗?如果是,如何以及为什么?
希望它能帮助某人,过得愉快!