Java: регулярное выражение для поля ввода только цифры и запятые + пробелы - PullRequest
3 голосов
/ 09 июля 2019

Есть поле, заполненное числами или группами чисел.

После запятой должен быть пробел!

Символ "," и пробел не могут бытьначало и / или конец поля

^[\d+]{1,}([,]{1}[\s]{1}).*[\d+]$ 
- this does not work. please help to write a regular expression according to the described condition.

пример

1 - ok!
2, 3 - ok!
6, 7, 4 -ok!
,5 - bad!
5 6 0 - bad!
4,5 - bad!

1 Ответ

4 голосов
/ 09 июля 2019

Вы можете использовать повторяющуюся группу с добавленным пробелом (или \s).

В вашем паттерне вы можете удалить .* и сопоставить последний \d+ внутри группы. Затем повторите группу 0+ раз.

Это будет выглядеть как ^[\d]{1,}([,]{1}[\s]{1}[\d]+)*$

Обратите внимание, что вам не нужно ставить \d+ в квадратных скобках, иначе + будет совпадать буквально, а квантификатор {1} может быть опущен:

^\d+(?:, \d+)*$

В Java

String regex = "^\\d+(?:, \\d+)*$";

Regex demo | Java демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...