Cómo funciona el patrón
| Parte | Significado |
|---|---|
(0|[1-9]\d*) | Mayor, menor y parche (grupos 1–3): números sin ceros a la izquierda |
\. | Puntos entre ellos |
(?:-([0-9A-Za-z.-]+))? | Pre-lanzamiento opcional tras un guion (grupo 4): beta.1, rc.2 |
(?:\+([0-9A-Za-z.-]+))? | Metadatos de compilación opcionales tras un signo más (grupo 5) |
Ejemplos 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;
Notas y limitaciones
Una versión práctica de las reglas de semver 2.0; quita primero la v inicial si tus etiquetas la usan. Compara las versiones numéricamente, grupo por grupo, no como cadenas de texto.
Probador de expresiones regulares
Escribe un patrón y observa cómo se resaltan las coincidencias en tiempo real en tu texto de prueba.