Как работает шаблон
| Часть | Значение |
|---|---|
(0|[1-9]\d*) | Мажорная, минорная и патч-версии (группы 1–3): числа без ведущих нулей |
\. | Точки между ними |
(?:-([0-9A-Za-z.-]+))? | Необязательная предрелизная метка после дефиса (группа 4): beta.1, rc.2 |
(?:\+([0-9A-Za-z.-]+))? | Необязательные метаданные сборки после плюса (группа 5) |
Примеры кода
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;
Примечания и ограничения
Практическая реализация правил semver 2.0. Если в ваших тегах используется префикс v, сначала удалите его. Сравнивайте версии численно, группа за группой, а не как строки.
Тестер регулярных выражений
Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.