Шаблон регулярного выражения для чисел, разделенных пробелами, и с двумя цифрами в дробной части - PullRequest
3 голосов
/ 07 октября 2019

Мне нужно регулярное выражение, которое будет соответствовать числам, разделенным пробелами ( макс. Девять чисел и макс. Три числа в группе ), и с одной или двумя цифрами в дробной части. Как:

1
1 000
0,01
1 000,1
1 000,10
11 000
1 111 111
111 111 111
111 111 111,11

не должен совпадать: ,75 1111 11 1 1 34

, пока у меня есть ^[0-9]{1,9}(,[0-9]{1,2})?$, но это не удается с пробелами.

Ответы [ 3 ]

2 голосов
/ 07 октября 2019

Я полагаю, вы запрашиваете валидатор формата валюты, значение которого не превышает 999 999 999,99, а ,99 необязательно:

^\d{1,3}(?: \d{3}){0,2}(,\d{1,2})?$

https://regex101.com/r/mapnlq/1

1 голос
/ 07 октября 2019

Вам необходимо использовать

^(?:[0-9]{1,9}|[0-9]{1,3}(?: [0-9]{3}){0,2})(?:,[0-9]{1,2})?$

Или, если вы планируете поддерживать какие-либо пробелы

^(?:[0-9]{1,9}|[0-9]{1,3}(?:\s[0-9]{3}){0,2})(?:,[0-9]{1,2})?$

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

Для поддержки любого количества группировок цифр замените {0,2} на *.

Подробности

  • ^ - начало строки
  • (?:[0-9]{1,9}|[0-9]{1,3}(?:\s[0-9]{3}){0,2}) - от 1 до 9 цифр или от 1 до 3 цифр, за которыми следуют 0, 1 или 2 пробела и 3 цифры
  • (?:,[0-9]{1,2})? - необязательная последовательность , и 1 или 2цифры
  • $ - конец строки.
1 голос
/ 07 октября 2019

Может быть,

^[0-9]{1,3}(?:\s[0-9]{1,3})?(?:\s[0-9]{1,3})?(?:,[0-9]{1,2})?$

может быть близко к тому, что вы имеете в виду.


Здесь мы предположили, что число, за которым следует пробел или , будет недействительным, например:

111 111 пробел

111 111 111 ,

и немного более простая для чтения версия будет:

^[0-9]{1,3}(?:\s[0-9]{1,3}){0,2}(?:,[0-9]{1,2})?$

Демо


Если вы хотитеУпростите / измените / изучите выражение, это было объяснено на верхней правой панели regex101.com . При желании вы также можете посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами входных данных.

Схема RegEx

jex.im визуализирует регулярные выражения:

enter image description here

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