Semver文字列の検証 — 有効なセマンティックバージョニングか?
バージョン文字列が有効なセマンティックバージョニングかどうかを確認します。MAJOR.MINOR.PATCH、プレリリース識別子、ビルドメタデータの正確なフォーマットルールを解説。
Validation
詳細な説明
Semver文字列の検証
すべてのバージョンのような文字列が有効なSemVerとは限りません。仕様は整形式のセマンティックバージョンとして認められるものについて厳格です。
公式フォーマット
有効なSemVer文字列は以下のパターンに一致する必要があります:
MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]
ここで:
- MAJOR、MINOR、PATCHは先頭ゼロのない非負整数
- PRERELEASE(任意)はドット区切りの識別子の系列(英数字とハイフン)
- BUILD(任意)はドット区切りの識別子の系列(英数字とハイフン)
有効な例
| 文字列 | 有効? | 理由 |
|---|---|---|
1.2.3 |
✅ | 標準的な3部構成バージョン |
0.0.0 |
✅ | ゼロは有効 |
1.2.3-alpha.1 |
✅ | プレリリース識別子 |
1.2.3+build.42 |
✅ | ビルドメタデータ |
無効な例
| 文字列 | 有効? | 理由 |
|---|---|---|
1.2 |
❌ | PATCHコンポーネントがない |
01.2.3 |
❌ | MAJORに先頭ゼロ |
v1.2.3 |
❌ | "v"プレフィックスはSemVerの一部ではない |
1.2.3.4 |
❌ | 4コンポーネントは不可 |
"v"プレフィックスの誤解
多くのエコシステム(Gitタグ、Goモジュール)はv1.2.3のようにvプレフィックスを使用します。これはSemVer仕様の一部ではなく、上に重ねた慣習です。厳密な検証では拒否すべきですが、多くのツールは自動的に除去します。
先頭ゼロ
SemVerは数値識別子の先頭ゼロを明示的に禁止しています:01.2.3は無効です。ただし、alpha.01のようなプレリリース識別子は文字列として扱われ有効です。
ユースケース
CI/CDパイプライン、パッケージ公開スクリプト、バージョンバンプツールでユーザー入力を検証し、リリースのタグ付け前に整形式のSemVer文字列のみを受け入れるようにする場合。