Регулярное выражение, позволяющее использовать нулевые или положительные ненулевые числа в java - PullRequest
0 голосов
/ 24 января 2020

Я действительно свободен sh для регулярных выражений, как я могу написать регулярное выражение, чтобы разрешить либо нулевые, либо любые положительные числа больше нуля?

@Getter
@Setter
public class CacheCreateRequest {
.
.
.
    @Pattern(regexp = RegexConstants.REGEX_POSITIVE_INTEGERS, message = 
    I18NKey.VALIDATION_FIELD_REPLICATION)
    private Integer replication;
}

Как я могу указать REGEX в "REGEX_POSITIVE_INTEGERS" "

public static final String REGEX_POSITIVE_INTEGERS = ".....";

Спасибо

1 Ответ

0 голосов
/ 24 января 2020

Вот шаблон, который, кажется, работает:

^(?!0+(?:\.0+)?)\d*(?:\.\d+)?$

Демо

Объяснение:

^                from the start of the input
(?!0+(?:\.0+)?)  assert that zero with/without a decimal zero component does not occur
\d*              then match zero or more digits (includes null/empty case)
(?:\.\d+)?       followed by an optional decimal component
$                end of the input

Использование отрицательного прогнозирующего утверждения для исключения любой формы нуля показалось мне самым простым способом удовлетворить ваше требование. Без нуля, оставшаяся часть шаблона для совпадения с положительным числом (или вообще без номера) довольно проста.

...