значение, которое должно соответствовать только числам, точкам и запятым - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть регулярное выражение:

"(\\d+\\.\\,?)+"

И значение:

3.053,500

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

1
12
1,2
1.2
1,23,456
1,23.456
1.234,567
etc.

1 Ответ

0 голосов
/ 15 февраля 2019

Ваше регулярное выражение (\d+\.\,?)+ соответствует 1 или более повторениям, состоящим из 1+ цифр, точки и опционального числа ,.Это означает, что строки должны заканчиваться точкой.3.053,500 не заканчивается точкой.

Вы можете использовать

s.matches("\\d+(?:[.,]\\d+)*")

См. Демонстрационную версию regex

Обратите внимание, что ^и $ привязки не нужны в методе Java .matches(), поскольку сопоставление автоматически привязывается к началу / концу строки.На regex101.com якоря должны соответствовать началу / концу строки (поскольку демонстрация запускается для многострочной строки).

Детали шаблона

  • \d+ - 1+ цифр
  • (?: - начало группы без захвата:
    • [.,] - точка или ,
    • \d+ - 1+ цифр
  • )* - 0 или более повторений.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...