Semver文字列の検証 — 有効なセマンティックバージョニングか?

バージョン文字列が有効なセマンティックバージョニングかどうかを確認します。MAJOR.MINOR.PATCH、プレリリース識別子、ビルドメタデータの正確なフォーマットルールを解説。

Validation

詳細な説明

Semver文字列の検証

すべてのバージョンのような文字列が有効なSemVerとは限りません。仕様は整形式のセマンティックバージョンとして認められるものについて厳格です。

公式フォーマット

有効なSemVer文字列は以下のパターンに一致する必要があります:

MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]

ここで:

  • MAJORMINORPATCHは先頭ゼロのない非負整数
  • 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文字列のみを受け入れるようにする場合。

試してみる — Semver Calculator

フルツールを開く