Regex untuk semantic version (semver)

Gunakan /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/ untuk memastikan seluruh string adalah semantic version (semver) yang valid. Setiap contoh di bawah sudah diuji dengan pola ini, dan kamu bisa membukanya di Regex Tester dengan sampel yang sudah terisi.

Diperbarui

/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/
Buka di Regex Tester
InputHasilGrup
1.0.0✓ Cocok1 0 0
2.10.3-beta.1✓ Cocok2 10 3 beta.1
1.0.0+build.5✓ Cocok1 0 0 build.5
0.1.0-rc.1+sha.5114f85✓ Cocok0 1 0 rc.1 sha.5114f85
1.0✗ Tidak cocok
01.0.0✗ Tidak cocok
v1.0.0✗ Tidak cocok
1.0.0-✗ Tidak cocok

Cara kerja pola

BagianArti
(0|[1-9]\d*)Major, minor, dan patch (grup 1–3): angka tanpa angka nol di depan
\.Titik di antara keduanya
(?:-([0-9A-Za-z.-]+))?Pre-release opsional setelah tanda hyphen (grup 4): beta.1, rc.2
(?:\+([0-9A-Za-z.-]+))?Build metadata opsional setelah tanda plus (grup 5)

Contoh kode

JavaScript

const re = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?', value))

PHP

preg_match('/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/', $value) === 1;

Catatan dan batasan

Ini adalah versi praktis dari aturan semver 2.0. Hapus huruf v di depan terlebih dahulu jika tag kamu menggunakannya. Bandingkan versi secara numerik, grup per grup, bukan sebagai string.

Pertanyaan yang sering diajukan

Apa regex untuk semantic version (semver)?
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/ — pola ini mencocokkan seluruh string. Lihat tabel di atas untuk fungsi tiap bagian.
Contoh mana yang cocok?
Dari contoh yang diuji, yang cocok adalah: 1.0.0, 2.10.3-beta.1, 1.0.0+build.5, 0.1.0-rc.1+sha.5114f85. Sisanya tidak cocok.
Bagaimana cara menguji regex ini?
Klik “Buka di Regex Tester”. Pola, flag, dan teks sampel akan termuat otomatis, dan kecocokan akan disorot saat kamu mengedit.