Como o padrão funciona
| Parte | Significado |
|---|---|
(0|[1-9]\d*) | Maior, menor e patch (grupos 1–3): números sem zeros à esquerda |
\. | Pontos entre eles |
(?:-([0-9A-Za-z.-]+))? | Pré-lançamento opcional após um hífen (grupo 4): beta.1, rc.2 |
(?:\+([0-9A-Za-z.-]+))? | Metadados de build opcionais após um sinal de mais (grupo 5) |
Exemplos de código
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 falsePython
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;
Observações e limitações
Uma versão prática das regras do semver 2.0; remova um v inicial antes, se suas tags usarem um. Compare as versões numericamente, grupo a grupo, e não como strings.
Testador de Expressões Regulares
Digite um padrão e veja as correspondências serem destacadas em tempo real no seu texto de teste.