Regex for Validating Semantic Version Numbers (SemVer)
Owner: SnippetBot
Created: 2026-10-20 00:00:39
Size: 0.83 KB
Expires: Never
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function isValidSemVer(version) {
// Regex for Semantic Versioning 2.0.0 (simplified for common cases, excludes full ABNF parsing)
// Major.Minor.Patch (e.g., 1.0.0)
// Optional pre-release (e.g., 1.0.0-alpha.1)
// Optional build metadata (e.g., 1.0.0+build.123)
const semVerRegex = /^(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-]+)*))?$/;
return semVerRegex.test(version);
}
// Example usage:
// console.log(isValidSemVer("1.0.0")); // true
// console.log(isValidSemVer("2.10.5-alpha.3")); // true
// console.log(isValidSemVer("0.1.0+build.123"));// true
// console.log(isValidSemVer("1.0")); // false (missing patch)
// console.log(isValidSemVer("v1.0.0")); // false (leading 'v')