Я пытаюсь получить метод Java, чтобы проверить, является ли аргумент String
правильно отформатированной строкой версии " semver " (семантическое управление версиями).
В моемapp, строки semver должны иметь форму:
<major>.<minor>.<patch>-<qualifier>
Где:
<major>
- положительное целое число (1 +) <minor>
и <patch>
оба являются неотрицательными целыми числами (0 +) <qualifier>
является буквенно-цифровой строкой (([0-9][a-z][A-Z])+
)
Допустимые примеры:
1.2.40
1.0.0-SNAPSHOT
2.0.45-RC
3.10.0
Моя лучшая попытка на данный момент:
public boolean isSemVer(String version) {
Pattern versionPattern = Pattern.compile("^[a-zA-Z-]+\\d+\\.\\d+\\.\\d+");
Matcher matcher = versionPattern.matcher(version);
return matcher.matches();
}
Создает false
для первого действительного примера 1.2.40
. Может кто-нибудь сказать мне, где я ошибаюсь и что мне нужно настроить в моем регулярном выражении, чтобы оно приняло мои варианты использования? Заранее спасибо!