Вы можете использовать это регулярное выражение,
^(?=[\d.]{1,6}$)\d+\.?\d+$
Здесь этот (?=[\d.]{1,6}$)
положительный взгляд в будущее гарантирует, что общая длина текста составляет от одного до шести символов, а \d+\.?\d+
гарантирует, что число будет в правильном формате.^
и $
- начальный и конечный якоря для обеспечения полного совпадения строк, а не частичного.
Regex Demo
Java-код,
List<String> list = Arrays.asList("123.45","1234..","12.3","123456","123456.7");
list.forEach(x -> {
System.out.println(x + " --> " + (x.matches("^(?=[\\d.]{1,6}$)\\d+\\.?\\d+$")?"Valid":"Invalid"));
});
Выход,
123.45 --> Valid
1234.. --> Invalid
12.3 --> Valid
123456 --> Valid
123456.7 --> Invalid