在JavaScript中解析SEMVER,与正式正则
#javascript #node #regex

最近我必须解析一个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的方法吗?如果是,如何以及为什么?

希望它能帮助某人,过得愉快!